rsync 同步文件重复拷贝问题
rsync 是同步文件的利器,一般用于多個(gè)機(jī)器之間的文件同步與備份,同時(shí)也支持在本地的不同目錄之間互相同步文件。在這種場(chǎng)景下,rsync 遠(yuǎn)比 cp 命令更加合適,它只會(huì)同步需要更新的文件,默認(rèn)情況下,rsync 通過比較文件的最后修改時(shí)間(mtime)和文件的大小(size)來確認(rèn)哪些文件需要被同步過去。
最近剛好有一個(gè)需求,需要將文件從一個(gè)目錄同步到另外一個(gè)目錄去,我就首先試了下下面的命令:
# mkdir src dest # echo hello > src/one.txt # rsync --stats src/1.txt dest這里加上 --stats 的目的是為了顯示文件傳輸?shù)脑敿?xì)信息。執(zhí)行完成后文件已經(jīng)同步到目標(biāo)目錄,非常簡(jiǎn)單,但是如果再執(zhí)行一次,我們會(huì)非常尷尬地發(fā)現(xiàn)文件被再次同步過去:
# rsync --stats src/one.txt destNumber of files: 1 Number of files transferred: 1 Total file size: 6 bytes Total transferred file size: 6 bytes Literal data: 6 bytes Matched data: 0 bytes File list size: 21 File list generation time: 0.001 seconds File list transfer time: 0.000 seconds Total bytes sent: 77 Total bytes received: 31sent 77 bytes received 31 bytes 216.00 bytes/sec total size is 6 speedup is 0.06這里的問題讓我抓狂很久,百思不得其解。但是如果我們運(yùn)行時(shí)加上 -a 參數(shù),文件就不會(huì)重復(fù)同步,下面是運(yùn)行結(jié)果:
# rsync -a --stats src/one.txt destNumber of files: 1 Number of files transferred: 0翻了下幫助,找到 -a 選項(xiàng)的說明:
# rsync --help | grep -w -- -a-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)使用這個(gè)選項(xiàng)后,會(huì)開啟 archive mode,這時(shí)同步的時(shí)候會(huì)保留文件的屬性,例如權(quán)限、用戶及組、時(shí)間等等。然后,我們回憶下 rsync 如何是比較文件,大概可以猜出問題應(yīng)該出在時(shí)間這一個(gè)屬性上,準(zhǔn)確地說是最后修改時(shí)間,也即所謂的 mtime。
那我們接下來,通過實(shí)際例子來確認(rèn)下我們的猜想:
# rm src/one.txt # rsync src/one.txt dest # stat -c %y src/one.txt dest/one.txt 2013-10-15 11:28:15.000000000 +0800 2013-10-15 11:28:17.000000000 +0800果然,不帶選項(xiàng)同步時(shí)源和目標(biāo)文件的 mtime 是不一樣的,這就導(dǎo)致下次 rsync 的時(shí)候,仍然誤以為文件需要同步。接下來,我們改變下 dest/one.txt 的 mtime,然后再執(zhí)行一次:
# touch -r src/one.txt dest/one.txt # rsync --stats src/one.txt destNumber of files: 1 Number of files transferred: 0這下 rsync 不會(huì)再同步 one.txt 了。當(dāng)然,還有其它的選項(xiàng)也能夠有同樣的效果,比如 --update 或者 --size-only,都可以嘗試下。
當(dāng)然大多數(shù)情況下,還是建議以下幾個(gè)選項(xiàng)一起使用:
# rsync -avzS --partial src dest轉(zhuǎn)載請(qǐng)注明轉(zhuǎn)自: 團(tuán)子的小窩 , 本文固定鏈接: rsync 同步文件重復(fù)拷貝問題
與rsync 同步
相關(guān)的文章- 使用命令行啟動(dòng) VirtualBox 虛擬機(jī)6,464 人瀏覽過
- 什么是交互式登錄 Shell17,067 人瀏覽過
- Grub 加載系統(tǒng)的三個(gè)階段4,436 人瀏覽過
- Sed and awk 筆記之 sed 篇:高級(jí)命令(二)7,607 人瀏覽過
- Sed and awk 筆記之 awk 篇:快速了解 Awk(二)9,502 人瀏覽過
- iftop: Linux 下的流量監(jiān)控工具
http://kodango.com/rsync-always-copy-files
轉(zhuǎn)載于:https://www.cnblogs.com/seasonzone/p/7574426.html
總結(jié)
以上是生活随笔為你收集整理的rsync 同步文件重复拷贝问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洛谷P3414 SAC#1 - 组合数
- 下一篇: Elasticsearch 基础入门