rsync
也可以依照檔案的大小來選擇備份的檔案,假設在 myfolder
目錄中有以下這些檔案:
ls -l myfolder/
total 15632 -rw-r--r-- 1 pi pi 1658348 Feb 5 09:09 bluez-5.43.tar.xz -rw-r--r-- 1 pi pi 94 Feb 5 07:57 chinese.py -rw-r--r-- 1 pi pi 2736 Feb 5 07:57 find_edimax.c -rw-r--r-- 1 pi pi 14332601 Feb 5 09:09 myfile.gz -rw-r--r-- 1 pi pi 763 Feb 5 08:02 pack.c
--min-size
可以指定備份檔案的大小下限,例如只備份 1MB 以上的檔案:
rsync -avh --min-size=1M myfolder/ backup/
sending incremental file list ./ bluez-5.43.tar.xz myfile.gz sent 16.00M bytes received 57 bytes 31.99M bytes/sec total size is 15.99M speedup is 1.00
而 --max-size
可以指定備份檔案的大小上限,例如只備份 4KB 以下的檔案:
rsync -avh --max-size=4K myfolder/ backup/
sending incremental file list ./ chinese.py find_edimax.c pack.c sent 3.91K bytes received 76 bytes 7.97K bytes/sec total size is 15.99M speedup is 4,012.68
--min-size
與 --max-size
也可以同時使用,例如只備份 1KB 到 2MB 之間的檔案:
rsync -avh --min-size=1K --max-size=2M myfolder/ backup/
sending incremental file list ./ bluez-5.43.tar.xz find_edimax.c sent 1.66M bytes received 57 bytes 3.32M bytes/sec total size is 15.99M speedup is 9.62
如果想讓 rsync
在備份檔案之後,自動將來源檔案刪除(也就是相當於 mv
的效果),可以加上 --remove-source-files
參數:
rsync -avh --remove-source-files myfolder/ backup/
sending incremental file list ./ bluez-5.43.tar.xz chinese.py find_edimax.c myfile.gz pack.c sent 16.00M bytes received 154 bytes 10.67M bytes/sec total size is 15.99M speedup is 1.00
這樣執行 rsync
之後,myfolder/
目錄會被清空,所有的資料都會被移到 backup/
目錄中,所以請小心使用,別勿刪重要檔案。
rsync
參數初學者如果不確定自己的 rsync
參數是否正確,在實際執行之前可以加上 --dry-run
來測試一下,加上這個參數之後 rsync
執行時還是會輸出正常的訊息,不過並不會更動到任何的檔案:
rsync -avh --dry-run --remove-source-files myfolder/ backup/
sending incremental file list bluez-5.43.tar.xz chinese.py find_edimax.c myfile.gz pack.c sent 194 bytes received 31 bytes 450.00 bytes/sec total size is 15.99M speedup is 71,086.85 (DRY RUN)
這樣可以方便使用者檢查自己的參數是否配置得宜。
crontab
定期備份通常如果要在本地端進行備份,就可以在 crontab
中定期執行這樣的指令,將重要的資料定期備份至指定目錄:
# m h dom mon dow command 0 5 * * 1 rsync -a /path/to/folder /path/to/backup/
這樣系統就會在每週一的早上 5 點執行 rsync
備份檔案。
如果在備份檔案時,只想要更新過去已經備份過得檔案,排出新增的檔案,可以使用 --existing
參數。
假設我們過去已經將 myfolder/
的檔案備份至 backup/
了:
rsync -avh myfolder/ backup/
而這時候又新增了一個新的檔案:
touch myfolder/new.file
若此時我們只要更新 backup/
中已經存在的檔案,排除後來新增的,就可以使用 --existing
參數:
rsync -avh --existing myfolder/ backup/
sending incremental file list ./ sent 201 bytes received 19 bytes 440.00 bytes/sec total size is 15.99M speedup is 72,702.46
執行 rsync
時加入 -i
參數可以個別檔案變動的資訊:
rsync -avhi myfolder/ backup/
sending incremental file list .d..t...... ./ .f...p..... find_edimax.c >f..t...... myfile.gz >f+++++++++ new.file >f.st...... pack.c sent 14.34M bytes received 79 bytes 3.19M bytes/sec total size is 15.99M speedup is 1.12
加入 -i
之後,每個檔案項目之前會多出一個標示字串,而這個標示字串的欄位有 11 個,分別為 YXcstpoguax
,其意義如下:
Y
:<
代表檔案傳送至遠端,>
代表檔案傳送至本地端,c
代表本地端變動(建立目錄等),h
代表硬式連結(hard link),.
代表沒有變動,*
代表其餘欄位有包含訊息(例如 deleting
)。X
:檔案類型,f
為一般檔案,d
為目錄,L
為連結檔,D
為設備檔(device),S
為特殊檔案(如 sockets 或 fifo)。c
:代表檔案內容有變動。s
:代表檔案大小有變動。t
:代表檔案時間戳記有變動。p
:代表檔案權限有變動。o
:代表檔案擁有者有變動。g
:代表檔案群組有變動。u
:保留欄位。a
:代表檔案 ACL 資訊有變動。x
:代表檔案擴充屬性(extended attribute)有變動。參考資料:Tecmint、HTG、dasunhegoda、The Geek Stuff、Linode、makeuseof
Page: 1 2