10.3.2013-13.3.2013の間でのみファイルに関心がある2つのsuseサーバー間でdbログファイルをコピーする必要があります
コピーする前にファイルを圧縮して、tarとscpで圧縮することが望まれます。現在、tar -cvzf /tmp/saas_archive_logs.tar.gz /var/lib/edumate/backup/archive_logs/db2inst1/SAAS --newer-mtime=2013-03-10
を使用しています。これにより、2013年10月3日から現在までのすべてのファイルを取得できます。しかし、私はそれらすべてを必要としません。そして、tarスイッチは見つかりませんでした。
Bichoyが示したように、find
コマンドを使用して、特定のアクセス、作成、および変更時刻を持つファイルを検索できます。ただし、-mtimeは24時間単位でオフセットを取得し、特定の「日」前の数から何かが必要でない限り、計算するのに必ずしも便利ではありません。それを-daystart
と組み合わせて、その日の初めに「丸める」必要があります。
私はあなたのケースでより便利だと思います-datestringをとる-newermtオプションです(そしてほとんどの-newerXYバージョンのような参照ファイルの名前ではありません)
これをfind
の-print0
オプションと組み合わせて、名前にスペースが含まれるファイルを処理し、オプションで-type f
を使用して、関心のある期間にディレクトリを取得しないようにします。
find /var/lib/edumate/backup/archive_logs/db2inst1/SAAS \
-newermt 20130310 -not -newermt 20130314 -type f -print0 \
| xargs -0 tar -cvzf /tmp/saas_archive_logs.tar.gz
これには大きな問題が1つあります。検出されたファイルの数が長くなる場合、xargs
はtar
の必要に応じてそのコマンド(この場合はxargs
)を複数回呼び出します無限ではないコマンドラインの引数に合わせるため。それを回避するには、常にcpio
を使用します。これは、stdinからファイル名を読み取ります。 --format=ustar
パラメータを使用してPOSIX tarファイルを取得します。この場合、目的の結果を取得するには、出力をgzip
にパイプする必要があります。
find /var/lib/edumate/backup/archive_logs/db2inst1/SAAS \
-newermt 20130310 -not -newermt 20130314 -type f -print0 \
| cpio --create --null --format=ustar \
| gzip > /tmp/saas_archive_logs.tar.gz
find
コマンドをチェックして、風袋引きする必要のあるファイルのリストを取得できます。 -atime
引数と組み合わせて通常の-btime
、-mtime
、-not
...引数を使用して、開始日と終了日(最大秒精度)を指定できます。次に、出力をxargs
にパイプし、次にtar
にパイプできます。時間引数の詳細については、find
のmanページを確認してください。
pdate: Anthonが示唆したように、-mtime
で+/-修飾子を使用して、-not
を使用せずに期間を指定できます。次に例を示します。
find . -mtime -5d2h3m10s -mtime +4d0h15m20s -print0 | xargs -0 tar cjvf mytar.tar.bz2
ここで、d, h, m, s
はそれぞれ日、時間、分および秒に対応します。これにより、5d2h3m10s
より新しく、4d0h15m20s
より古いファイルが変更されます。