Files
如何 scp/tar 特定日期之間的文件?
我需要在兩個 suse 伺服器之間複製數據庫日誌文件,我只對 10.3.2013 - 13.3.2013 之間的文件感興趣
需要在複製之前壓縮文件,所以我將它們 tar 和 scp。目前我正在使用
tar -cvzf /tmp/saas_archive_logs.tar.gz /var/lib/edumate/backup/archive_logs/db2inst1/SAAS --newer-mtime=2013-03-10
它給我從 10.3.2013 到現在的所有文件。但我不需要所有這些。而且我沒有找到任何焦油開關。
正如 Bichoy 指出的,您可以使用該
find
命令查找具有特定訪問、創建和修改時間的文件。但是 -mtime 以 24 小時為增量進行偏移,並且並不總是便於計算,除非您想要特定數量的“天”前的東西。您需要將其與-daystart
“四捨五入”到一天的開始。我認為在您的情況下更方便的是 -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
這樣做有一個大問題:如果找到的文件數量過長,將根據需要多次
xargs
呼叫其命令(在這種情況下),以適應不是無限的命令行上的參數。為了避免我總是使用,它從標準輸入讀取文件名。使用參數獲取 POSIX tar 文件,在您的情況下,您需要通過管道傳輸輸出以獲得所需的結果:tar``xargs``cpio``--format=ustar``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