rsync和ssh是兩個單獨命令。
rsync語法 : rsync [OPTION]... SRC [SRC]... DEST
or
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
or
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
or
rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
or
rsync [OPTION]... [USER@]HOST:SRC [DEST]
or
rsync [OPTION]... [USER@]HOST::SRC [DEST]
or
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
〔options〕我只給你列出-e的參數。
-e,
--rsh=COMMAND
specify the remote shell to use
--rsync-path=PROGRAM
specify the rsync to run on the remote machine
--existing
skip creating new files on receiver
--ignore-existing
skip updating files that already exist on receiver
--remove-source-files
sender removes synchronized files (non-dirs)
--del
an alias for --delete-ring
--delete
delete extraneous files from destination dirs
--delete-before
receiver deletes before transfer, not ring
--delete-ring
receiver deletes ring transfer (default)
--delete-delay
find deletions ring, delete after
--delete-after
receiver deletes after transfer, not ring
--delete-excluded
also delete excluded files from destination dirs
--ignore-errors
delete even if there are I/O errors
--force
force deletion of directories even if not empty
--max-delete=NUM
don't delete more than NUM files
--max-size=SIZE
don't transfer any file larger than SIZE
--min-size=SIZE
don't transfer any file smaller than SIZE
--partial
keep partially transferred files
--partial-dir=DIR
put a partially transferred file into DIR
--delay-updates
put all updated files into place at transfer's end
ssh語法: ssh [-1246AaCfgKkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-i identity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-w local_tun[:remote_tun]] [user@]hostname [command]
B. Linux下數據備份命令scp、rsync和後台運行
scp和rsync 均可實現文件的復制,但相比較,scp佔用系統資源較小,rsync速度較快。當小文件眾多時,rsync會導致硬碟I/O非常高,而scp基本不影響系統正常使用。可根據需要這倆選其一實現文件復制。
scp 是secure 的縮寫,scp是Linux系統下基於ssh登錄進行安全的遠程文件拷貝命令。
可以實現本地文件復制到遠程伺服器,也可以將遠程文件復制到本地。
rsync 是remote sync的縮寫。使用rsync備份數據時,不會直接覆蓋以前的數據(如果數據已經存在),而是先判斷已存在的數據和新數據的差異(默認規則是文件大小或修改時間有差異),只有數據不相同時才會把不相同的部分覆蓋。在僅作增量數據的時比scp靈活。
一般CentOS默認安裝rsync,若使用 rsync -v 提示找不到命令,可使用 yum install -y rsync 安裝。
單個冒號和雙冒號的區別 :使用rsync在遠程傳輸數據前,是需要進行登陸認證的,這個過程可使用ssh協議也可以使用rsync協議完成。單冒號(:)使用的是ssh協議;雙冒號(::)使用的是rsync協議。
默認情況下,rsync只確保源文件的所有內容(明確排除的文件除外)都復制到目標目錄。它不會使兩個目錄保持不同,並且不會刪除文件。如果要使目標目錄成為源目錄的鏡像副本,則使用--delete選項。可刪除只存在目標目錄,不存在於源目錄的文件。
增量備份算是一個經常使用的場景了。兩台伺服器之間進行文件定期備份,無需所有文件都一遍,僅復制有變動的文件。
具體做法是,第一次同步是全量備份,所有文件在基準目錄裡面同步一份。以後每一次同步都是增量備份,只同步源目錄與基準目錄之間有變動的部分,將這部分保存在一個新的目標目錄。這個新的目標目錄之中,也是包含所有文件,但實際上,只有那些變動過的文件是存在於該目錄,其他沒有變動的文件都是指向基準目錄文件的硬鏈接。
--link-dest 參數用來指定同步時的基準目錄。
上面命令中, --link-dest 參數指定基準目錄 /compare/path ,然後源目錄 /source/path 跟基準目錄進行比較,找出變動的文件,將它們拷貝到目標目錄 /target/path 。那些沒變動的文件則會生成硬鏈接。這個命令的第一次備份時是全量備份,後面就都是增量備份了。
一般伺服器之間復制文件都比較大,為防止誤操作,最好在後台運行。但因為需要和遠程伺服器之間的ssh通訊多是需要密碼的,所以不能直接使用nohup 放置於後台。無論是scp還是rsync都可操作如下:
後台和前台任務的切換
scp不支持斷點續傳,掛起scp進程可能導致數據缺失。傾向於使用rsync。
如果有其他任務需要使用nohup後台運行,但執行時卻忘記了使用nohup,也可參照此方法進行設置。
參考:1. Linux之scp命令及後台運行scp
C. linux 自帶的rsync 怎麼同步文件到windows
(1)先使用telnet命令嗅探一下網路鏈路有沒有問題,telnet使用方法如下:
telnet ip 873
如果嗅探網路不通,那就檢查一下網路配置,是否請求windows防火牆阻止等。
(2)若果嗅探網路是通的,那就檢查一下rsync的配置:
hosts allow = IP 是不是限制了linuxA機器的訪問。
path = PATH 注意:這個路徑不支持中文的,你的路徑是否是中文。
auth users = USER 注意:用戶是否有許可權訪問共享文件目錄。
secrets file = /PAS/rsync_db.ps 指定的密碼是否與LinuxA配置的一致。
我能想到的就這么多,希望對你有所幫助。
D. Linux下rsync怎麼用
rsync的命令格式可以為:
1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
2. rsync [OPTION]... [USER@]HOST:SRC DEST
3. rsync [OPTION]... SRC [SRC]... DEST
4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync有六種不同的工作模式:
1. 拷貝本地文件;當SRC和DES路徑信息都不包含有單個冒號":"分隔符時就啟動這種工作模式。
2.使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號":"分隔符時啟動該模式。
3.使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號":"分隔符時啟動該模式。
4. 從遠程rsync伺服器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啟動該模式。
5. 從本地機器拷貝文件到遠程rsync伺服器中。當DST路徑信息包含"::"分隔符時啟動該模式。
6. 列遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。
-a 以archive模式操作、復制目錄、符號連接 相當於-rlptgoD
rsync中的參數
-r 是遞歸
-l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有許可權;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當於塊設備文件;
-z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等信息,和-P有點關系,自己試試。可以看文檔;
-e ssh的參數建立起加密的連接。
-u只進行更新,防止本地新文件被重寫,注意兩者機器的時鍾的同時
--progress是指顯示出詳細的進度情況
--delete是指如果伺服器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致
--password-file=/password/path/file來指定密碼文件,這樣就可以在腳本中使用而無需互動式地輸入驗證密碼了,這里需要注意的是這份密碼文件許可權屬性要設得只有屬主可讀。
B、一些實例
B1、列出rsync 伺服器上的所提供的同步內容;
首先:我們看看rsync伺服器上提供了哪些可用的數據源
# rsync --list-only [email protected]::
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
2002------2009
++++++++++++++++++++++++++++++++++++++++++++++
rhel4home This is RHEL 4 data
註:前面是rsync所提供的數據源,也就是我們在rsyncd.conf中所寫的[rhel4home]模塊。而「This is RHEL 4 data」是由[rhel4home]模塊中的 comment = This is RHEL 4 data 提供的;為什麼沒有把rhel4opt數據源列出來呢?因為我們在[rhel4opt]中已經把list=no了。
$ rsync --list-only [email protected]::::rhel4home
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
2002------2009
++++++++++++++++++++++++++++++++++++++++++++++
Password:
drwxr-xr-x 4096 2009/03/15 21:33:13 .
-rw-r--r-- 1018 2009/03/02 02:33:41 ks.cfg
-rwxr-xr-x 21288 2009/03/15 21:33:13 wgetpaste
drwxrwxr-x 4096 2008/10/28 21:04:05 cvsroot
drwx------ 4096 2008/11/30 16:30:58 easylife
drwsr-sr-x 4096 2008/09/20 22:18:05 giddir
drwx------ 4096 2008/09/29 14:18:46 quser1
drwx------ 4096 2008/09/27 14:38:12 quser2
drwx------ 4096 2008/11/14 06:10:19 test
drwx------ 4096 2008/09/22 16:50:37 vbird1
drwx------ 4096 2008/09/19 15:28:45 vbird2
後面的root@ip中,root是指定密碼文件中的用戶名,之後的::rhel4home這是rhel4home模塊名
B2、rsync客戶端同步數據;
#rsync -avzP [email protected]::rhel4home rhel4home
Password: 這里要輸入root的密碼,是伺服器端rsyncd.secrets提供的。在前面的例子中我們用的是mike,輸入的密碼並不回顯,輸好就回車。
註: 這個命令的意思就是說,用root用戶登錄到伺服器上,把rhel4home數據,同步到本地當前目錄rhel4home上。當然本地的目錄是可以你自己 定義的。如果當你在客戶端上當前操作的目錄下沒有rhel4home這個目錄時,系統會自動為你創建一個;當存在rhel4home這個目錄中,你要注意 它的寫許可權。
#rsync -avzP --delete [email protected]::rhel4home rhel4home
這回我們引入一個--delete 選項,表示客戶端上的數據要與伺服器端完全一致,如果 linuxsirhome目錄中有伺服器上不存在的文件,則刪除。最終目的是讓linuxsirhome目錄上的數據完全與伺服器上保持一致;用的時候要 小心點,最好不要把已經有重要數所據的目錄,當做本地更新目錄,否則會把你的數據全部刪除;
設定 rsync client
設定密碼文件
#rsync -avzP --delete --password-file=rsyncd.secrets [email protected]::rhel4home rhel4home
這次我們加了一個選項 --password-file=rsyncd.secrets,這是當我們以root用戶登錄rsync伺服器同步數據時,密碼將讀取rsyncd.secrets這個文件。這個文件內容只是root用戶的密碼。我們要如下做;
# touch rsyncd.secrets
# chmod 600 rsyncd.secrets
# echo "mike"> rsyncd.secrets
# rsync -avzP --delete --password-file=rsyncd.secrets [email protected]::rhel4home rhel4home
註:這里需要注意的是這份密碼文件許可權屬性要設得只有屬主可讀。
這樣就不需要密碼了;其實這是比較重要的,因為伺服器通過crond 計劃任務還是有必要的;
B3、讓rsync客戶端自動與伺服器同步數據
伺服器是重量級應用,所以數據的網路備份還是極為重要的。我們可以在生產型伺服器上配置好rsync 伺服器。我們可以把一台裝有rysnc機器當做是備份伺服器。讓這台備份伺服器,每天在早上4點開始同步伺服器上的數據;並且每個備份都是完整備份。有時 硬碟壞掉,或者伺服器數據被刪除,完整備份還是相當重要的。這種備份相當於每天為伺服器的數據做一個鏡像,當生產型伺服器發生事故時,我們可以輕松恢復數 據,能把數據損失降到最低;是不是這么回事??
step1:創建同步腳本和密碼文件
#mkdir /etc/cron.daily.rsync
#cd /etc/cron.daily.rsync
#touch rhel4home.sh rhel4opt.sh
#chmod 755 /etc/cron.daily.rsync/*.sh
#mkdir /etc/rsyncd/
#touch /etc/rsyncd/rsyncrhel4root.secrets
#touch /etc/rsyncd/rsyncrhel4easylife.secrets
#chmod 600 /etc/rsyncd/rsync.*
註: 我們在 /etc/cron.daily/中創建了兩個文件rhel4home.sh和rhel4opt.sh ,並且是許可權是755的。創建了兩個密碼文件root用戶用的是rsyncrhel4root.secrets ,easylife用戶用的是 rsyncrhel4easylife.secrets,許可權是600;
我們編輯rhel4home.sh,內容是如下的:
#!/bin/sh
#backup 192.168.145.5:/home
/usr/bin/rsync -avzP --password-file=/etc/rsyncd/rsyncrhel4root.password [email protected]::rhel4home /home/rhel4homebak/$(date +'%m-%d-%y')
我們編輯 rhel4opt.sh ,內容是:
#!/bin/sh
#backup 192.168.145.5:/opt
/usr/bin/rsync -avzP --password-file=/etc/rsyncd/rsyncrhel4easylife.secrets [email protected]::rhel4opt /home/rhel4hoptbak/$(date +'%m-%d-%y')
註:你可以把rhel4home.sh和rhel4opt.sh的內容合並到一個文件中,比如都寫到rhel4bak.sh中;
接著我們修改 /etc/rsyncd/rsyncrhel4root.secrets和rsyncrhel4easylife.secrets的內容;
# echo "mike" > /etc/rsyncd/rsyncrhel4root.secrets
# echo "keer"> /etc/rsyncd/rsyncrhel4easylife.secrets
然後我們再/home目錄下創建rhel4homebak 和rhel4optbak兩個目錄,意思是伺服器端的rhel4home數據同步到備份伺服器上的/home/rhel4homebak 下,rhel4opt數據同步到 /home/rhel4optbak/目錄下。並按年月日歸檔創建目錄;每天備份都存檔;
#mkdir /home/rhel4homebak
#mkdir /home/rhel4optbak
step2:修改crond伺服器的配置文件 加入到計劃任務
#crontab -e
加入下面的內容:
# Run daily cron jobs at 4:10 every day backup rhel4 data:
10 4 * * * /usr/bin/run-parts /etc/cron.daily.rsync 1> /dev/null
註:第一行是注釋,是說明內容,這樣能自己記住。
第二行表示在每天早上4點10分的時候,運行 /etc/cron.daily.rsync 下的可執行腳本任務;
配置好後,要重啟crond 伺服器;
# killall crond 註:殺死crond 伺服器的進程;
# ps aux |grep crond 註:查看一下是否被殺死;
# /usr/sbin/crond 註:啟動 crond 伺服器;
# ps aux |grep crond 註:查看一下是否啟動了?
root 3815 0.0 0.0 1860 664 ? S 14:44 0:00 /usr/sbin/crond
root 3819 0.0 0.0 2188 808 pts/1 S+ 14:45 0:00 grep crond
E. linux之間傳文件用什麼工具好呢
1. 前言
linux之間傳文件命令用什麼命令?本文介紹一種最常用,也是功能強大的文件同步和傳輸工具Rsync,本文提供詳細傻瓜式教程。
在本教程中,我們將通過實際使用案例和最常見的rsync選項的詳細說明向您展示如何使用rsync。
本教程適用於Ubuntu系統、Linux Mint系統、Deepin深度Linux系統、Fedora系統、Debian系統、Elementary OS系統、OpenSUSE系統、CentOS系統、RHEL系統,Arch Linux等等GNU Linux發行版。
2. `rsync`介紹
Rsync是一個快速且通用的命令行實用程序,它可以使Windows與Linux之間,Linux與Linux之間傳文件或者Linux與MAC OS之間傳文件。或從Linux本地文件系統到遠程Rsync守護進程之間同步文件和文件夾。它只傳輸源和目標之間的差異,從而提供快速增量文件傳輸。
Rsync可以用於鏡像數據、增量備份、在Linux系統之間傳文件,也可以用於Linux與Windows之間傳輸文件,還可以替代日常使用的scp、sftp和cp命令,他們一般也用於Linux之間傳文件或者Linux與MAC OS之間傳文件。
3. 如何安裝`Rsync`
rsync實用程序預裝在大多數Linux發行版和macOS上。你可以輸入以下命令,檢查你的系統是否已安裝:
查看Rsync版本的輸出結果:
如果您的系統上沒有安裝rsync,您可以使用發行版的包管理器輕松地安裝它。
在Ubuntu 或者Debian體系的Linux系統上安裝rsync
在CentOS 或者Fedora系統上安裝rsync
4. Rsync命令使用語法
在討論如何使用rsync命令之前,讓我們先回顧一下基本語法。
rsync實用程序表達式採用以下形式:
rsync提供了許多選項來控制其行為和功能。最廣泛使用的選項是:
-a, --archive, 歸檔模式, 相當於 -rlptgoD。這個選項告訴rsync遞歸地同步目錄、傳輸特殊設備和塊設備、保存符號鏈接、修改時間、組、所有權和許可權。
-z, --compress. 這個選項將強制rsync在傳送文件到目標計算機時壓縮數據。僅當到遠程計算機的連接很慢時才使用此選項。
-P, 相當於--partial --progress。使用此選項時,rsync將在傳輸期間顯示一個進度條,並保留部分傳輸的文件。當通過緩慢或不穩定的網路連接傳輸大文件時,它非常有用。
--delete. 使用此選項時,rsync將從目標位置刪除無關文件。它對鏡像很有用。
-q, --quiet。如果希望禁用非錯誤消息,請使用此選項。
-e. 此選項允許您選擇不同的遠程shell。默認情況下,rsync被配置為使用ssh。
5. 使用Rsync最基本的功能使Linux之間傳輸文件
要將一個文件從一個本地位置復制到另一個本地位置,可以運行以下命令:
運行該命令的用戶必須具有目標位置上的讀許可權和目標上的寫許可權。
從目標位置省略文件名將復制具有當前名稱的文件。如果您想將文件保存在另一個名稱下,請在目標部件上指定新名稱:
比如復制filename.zip到目標目錄並重新把文件名修改為newfilename.zip
在下面的例子中,我們正在創建一個本地備份我們的網站文件:
如果目標目錄不存在,rsync將創建它。
值得一提的是,rsync對後面帶有斜杠/的源目錄提供了不同的處理。如果在源目錄上添加一個尾隨斜杠,它將只將目錄的內容復制到目標目錄。當後面的斜杠被省略時,rsync將把源目錄復制到目標目錄中。
6. 如何使用Rsync與遠程伺服器同步文件(包括上傳下載)
當使用rsync進行遠程傳輸時,必須同時安裝在源機器和目標機器上。rsync的新版本被配置為使用SSH作為默認遠程shell。
在下面的例子中,我們將一個目錄從本地轉移到遠程機器:
如果你需要配置2台Linux之間免密碼登錄,請查看以下教程:
如果你想把數據從遠程傳輸到本地機器,你需要使用遠程位置作為一個源:
如果遠程主機上的SSH監聽的埠不是默認的22埠,那麼可以使用-e選項指定埠:
比如遠程伺服器的SSH埠被修改為1234
當傳輸大量數據時,建議在屏幕會話中運行rsync命令或使用-P選項:
7. 使用Rsync傳送或同步文件時,排除某些文件或者目錄
當使用Rsync排除文件或目錄時,需要使用它們到源位置的相對路徑。
有兩個選項可以排除文件和目錄。第一個選項是使用--exclude參數,並在命令行中指定要排除的文件和目錄。
在下面的例子中,我們排除了位於src_directory中的123和abc目錄:
第二個選項是使用--exclude-from參數,並指定要在文件中排除的文件和目錄。
vi exclude-file.txt
加入需要排除的文件,比如文件file1.c,目錄zcwyou:
8. 總結
在本教程中,您學習了如何使用Rsync在多台Linux之間傳輸、復制或同步文件和目錄。在Rsync用戶手冊頁面上有更多關於Rsync的內容。
如果你有任何問題,請留下你的意見。
F. 運用rsync進行linux數據同步
password file must not be other-accessible
也就是說rsyncd.scrt文件的許可權設置不對, 不能應該能讓其他用戶來訪問. 你可以 chmod 600 rsyncd.scrt試一下。
很忌諱的就是你這種新手,什麼不知道就抄別人的程序來用。 我覺得, 你應該至少了解rsync的用法,linux的基本原理,才能作這樣的工作。
G. linux上的rsync命令詳解
rsync 就是遠程同步的意思remote sync.
rsync 被用在UNIX / Linux執行備份操作操作.
rsync 工具包被用來從一個位置到另一個位置高效地同步文件和文件夾. rsync可以實現在同一台機器的不同文件直接備份,也可以跨伺服器備份.
rsync 語法如下
從語法結構我們可以看出, 源和目標即可以在本地也可以在遠端. 如果是遠端的話,需要指明登錄用戶名, 遠端伺服器名, 和遠端文件或目錄. 同時源可以是多個, 目標位置只能是一個.
說明:
-z: --compress 使用壓縮機制
-v: --verbose 列印詳細信息
-r: --recursive 以遞歸模式同步子目錄
注意: 同步完成後, 我們會發現文件的時間戳timestamps發生了改變.
有時我們希望拷貝或同步時, 時間戳不要發生變化, 源文件是什麼時間戳,目標文件就是什麼猜悉敏時間戳, 這時我們需要使用 -a --archive 歸檔模式選項. -a 選項相當於7個選項的組合 -rlptgoD
-r, --recursive: 遞歸模式Recursive mode
-l, --links: 將符號鏈接當作符號鏈接文件拷貝, 不拷貝符合鏈接指向的文件內容.
-p, --perms: 保留文件許可權
-t, --times: 保留陸高修改時間戳
-g, --group: 保留用戶組信息
-o, --owner: 保留用戶信息(需要超級用戶許可權)
-D, 相當於 --devices --specials 的組合, 保留設備文件, 保留特殊文件.
同步完成後, 我們再來看文件屬性, 時間戳信息得到了保留, 不僅如此文件的所有者 和所在組也得到保穗枝留.
說明: Pubkeys 是一個普通文件
使用rsync, 也可以從本地拷貝多個文件或目錄到遠端, 以下即為示例:
注意:
與本地文件拷貝不同的地方在於, 當拷貝文件到遠程伺服器時, 我們指定遠程主機上的用戶名, 伺服器地址, 路徑等信息, 類是於使用scp命令拷貝, 如果沒有設置ssh免密碼登錄我們還需要提供遠程用戶的密碼等信息.有時你不想頻繁輸入密碼, 或者rsync運行在一個無人執守的腳本裡面, 這是需要預先設置ssh免密登錄, 或者使用結合expect命令,自動輸入密碼, 但是出於安全考慮, 密碼需要加密. 所以在條件許可的情況下, 還是推薦設置ssh免密登錄.
與示例 4 稍有不同, 這時遠端目錄或文件作為源位置, 本地目錄或文件作為目標位置, 示例如下:
rsync 允許指定遠程主機上運行shell命令.
這時需要使用 -e 選項:
-e, --rsh=COMMAND 指定遠端使用的shell命令
Use rsync -e ssh to specify which remote shell to use. In this case, rsync will use ssh.
在一下特殊的使用場景中, 我們不希望拷貝文件時, 我們不希望拷貝過程覆蓋掉目標位置中用戶做出的修改. 這時我們需要使用 -u 選項明確的告訴rsync命令保留用戶在目標文件中作出的修改. 在下面的例子中, 文件Basenames是用戶基於上次的拷貝, 修改過的文件, 當我們使用了-u 選項後, 該文件中的修改將不會被覆蓋掉.
在某些特殊場景中, 我們只需要遠程伺服器上的目錄結構, 而不希望花大量時間, 帶寬拷貝文件內容, 這時我們可以使用 -d, --dirs選項來達到目的.
有時我們希望拷貝文件時, 能實時的顯示拷貝進度, 以及傳輸速率等信息. 尤其是拷貝大文件時, 程序不輸出信息, 用戶往往無法區分程序是在響應中, 還是已經掛起, 在這種情況下如果使用 –progress 就會非常有幫助.
rsync –progress option displays detailed progress of rsync execution as shown below.
你也可以使用rsnapshot工具 (rsnapshot會調用rsync)來備份本地linux伺服器, 或者備份遠程linux伺服器.
有時我們希望目標文件和源文件保持嚴格一致, 不要多文件也不要少文件, 這是我們可能需要使用 -delete 選項來達到目的. 如果使用 -delete 選項, rsync將刪除目標位置多餘的文件或文件夾. 此選項還可以結合--delete-excluded 選項一起使用, 添加一些例外的文件.
上述示例中, new-file.txt 是源文件中沒有的文件, 其將會在拷貝時被刪除掉.
在某些特殊的場景下, 我們只想更新, 目標位置已經存在的文件或目錄, 而不關心源位置的新文件, 這時我們可以使用-existing 選項僅僅更新已經存在的文件.
讓我們來驗證一下這個選項的功能, 首先在源端添加一個新文件 new-file.txt.
從上面的例子可以看到, 由於加了--existing選項新文件new-file.txt沒有被拷貝到目標位置
選項-i, --itemize-changes 非常有用, 當我們想了解目標位置和源位置的文件差異時.
在源端:
在目標端:
注意: 在上面的例子中, 源位置和目標位置有兩處差異. 第一, 源文件Basenames的所有者和組 與 目標文件不同, 第一Dirnames文件大小也不一樣.
現在讓我們來看看rsync會怎樣顯示這些差異
輸出信息只在相應文件前面顯示了9個字母來標識改變, 這些字母具體是什麼意思呢? 請參考以下詳細說明
rsync 可以使用--include 和 --exclude 選項結合通配符進行文件或文件夾過濾
在上面的示例中, 僅僅以P打頭的文件和文件夾被包含了進來, 其他的文件都被過濾在拷貝的過程中被排除在外了.
可以使用--max-size 告訴rsync 不要拷貝大小超過某個值的文件, 可以使用K, M, G指定文件大小, M for megabytes and G for gigabytes.
rsync 有個重要優點就是, 可以做到在拷貝的過程中, 只拷貝發生變化了的部分, 而不是發送整個文件.
但是在某些場景中, 比如文件較少, 文件size較小時, 我們的帶寬又足夠大, cpu資源相對又貧乏, 我們不希望它這樣做, 因為畢竟計算源端和目標端的checksum, 並做對比, 也需要額外cpu開銷. 這時我們可以使用 -W, --whole-file 選項, 讓rsync不用計算那麼多, 一上來就直接開始傳送文件. 我們可以像下面這么做.
15個Rsync命令實例