Backup

通過 scp 複製/備份除最新文件之外的所有文件

  • July 27, 2011

我有一個在多台機器上執行的程序,它將結果寫入~/data/machine_name/,每次結果文件超過 1MB 時,程序繼續前進並寫入一個新文件。(所有機器都具有相同的目錄架構)。

我想自動備份這些文件,以防其中一台機器出現故障。知道最近訪問的文件是程序正在寫入的文件,因此,我將複製除此之外的所有舊文件。下次啟動備份作業時,將包含上次備份中省略的最新文件,依此類推。

現在我只使用一個簡單的scp命令,它甚至可以複製遠端機器打開的文件。

有沒有辦法做到這一點?用於此類工作的命令行實用程序或腳本?

您可以使用帶有選項rsync的備份實用程序:--exclude

/usr/bin/rsync -avz --exclude='$EXCLUDED_DIR_OR_FILE' -e ssh /your/base/folder \
user@host_or_ip:/target/machine/path >> /optional/log/file.log

您可以$EXCLUDED_DIR_OR_FILE通過查找最後更新的文件來確定變數。有幾種方法可以在給定目錄中查找最後更新的文件,其中一種方法是一起使用lsawk實用程序:

ls -lrt | awk '{ f=$NF }; END{ print f }'

請注意,此命令列印最後修改file name的而不是文件的完整路徑。

引用自:https://unix.stackexchange.com/questions/17484