コマンド置換を使用してtar.tgzファイルを作成しようとしています。
2012年8月17日のバックアップがあります。
-rw-r----- 1 ossec 502 804M Aug 17 2012 BKPMDISINT_i6nir20j.F_bkp
-rw-r----- 1 ossec 502 2.7G Aug 17 2012 BKPSYFINT_i5nir20j.F_bkp
-rw-r----- 1 ossec 502 3.9G Aug 17 2012 BKPMSFFINT_i4nir20j.F_bkp
-rw-r----- 1 ossec 502 28M Aug 17 2012 c-651746692-20120817-00
-rw-r----- 1 ossec 502 2.0G Aug 17 2012 ALG_KLPFINT_ianir576.alg
-rw-r----- 1 ossec 502 1.5G Aug 17 2012 ALG_KLPFINT_i8nir576.alg
-rw-r----- 1 ossec 502 37M Aug 17 2012 ALG_KLPINT_ibnir64h.alg
-rw-r----- 1 ossec 502 2.2G Aug 17 2012 ALG_KLPFINT_i9nir576.alg
-rw-r----- 1 ossec 502 28M Aug 17 2012 c-651746692-20120817-01
-rw-r----- 1 ossec 502 27M Aug 17 2012 ctrl_170803
だから私はそれらをタールする必要があります。このコマンドを使用しました
tar -zcvf DB-Backup-17082012.tgz $(ls -lrth|grep "8月17日")
しかし、私にはこのようなエラーが発生します。
tar: You may not specify more than one `-Acdtrux' option
Try `tar --help' or `tar --usage' for more information.
ベストアンサー1
これにより、$(ls -lrth|grep "Aug 17")
ファイル名だけでなく行全体が引数として取得されるため、tar
機能しません。一般的に言えば解析されない出力ls
。
比較的新しいバージョンのGnu find(> = v4.3.3)がある場合は、次のことができます。
find . -maxdepth 1 -newermt 20120817T0000 -not -newermt 20130818T0000 -print0 \
| cpio --create --null --format=ustar \
| gzip > DB-Backup-17082012.tgz
find
これをサポートしていない場合は、-newermt
これらの日付タイムスタンプを使用して2つのファイルを作成し、-newerを使用できます。もちろんそれも使用できますが、-daystart -mtime
日付を計算する必要があります(または試行錯誤を使用する必要があります)。
私が提案する1つは、ファイルの日付をYYYYMMDD形式で使用することです。まず、同じ文字列(日付基準)で始まる複数のファイルがある場合は、2番目にファイル名(6月5日(ヨーロッパ)または5月6日(アメリカ))を見ている人に応じてソートが良くなります。 05062012はあいまいです。 。したがって、1708年は8月17日に間違いありませんが、DB-Backup-20120817.tgz