Linux下rsync命令用法
目錄概述:
rsync工具簡介
1. rsync用法
2. rsync 引數說明
3. rsync的配置
3.1 2臺主機建立ssh信任
3.2 伺服器端和客戶端使用
4. rsync的簡單使用
rsync工具簡介
rysnc是一個數據映象及備份工具,具有可使本地和遠端兩臺主機的檔案,目錄之間,快速同步映象,遠端資料備份等功能。在同步過程中,rsync是根據自己獨特的演算法,只同步有變化的檔案,甚至在一個檔案裡只同步有變化的部分,所以可以實現快速的同步資料的功能。
1. rsync用法
Usage: rsync [OPTION]… SRC [SRC]… DEST
or rsync [OPTION]… SRC [SRC]… [[email protected]]HOST:DEST
or rsync [OPTION]… SRC [SRC]… [[email protected]]HOST::DEST
or rsync [OPTION]… SRC [SRC]… rsync://[[email protected]]HOST[:PORT]/DEST
or rsync [OPTION]… [[email protected]]HOST:SRC [DEST]
or rsync [OPTION]… [
or rsync [OPTION]… rsync://[[email protected]]HOST[:PORT]/SRC [DEST]
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect
to an rsync daemon, and require SRC or DEST to start with a module name.
2. rsync 引數說明
-h , --help 顯示rsync求助資訊
--version 顯示rsync版本
-v , --verbose 複雜的輸出資訊
-q , --quiet 安靜模式,幾乎沒有訊息產生, 常用在以cron執行rsync
-I, --ignore-times 通常rsync為了加快速度會忽略同樣檔案大小且同樣,同樣存取時間點的檔案
可以通過此引數開關此快速檢查。
--size-only rsync 只檢查檔案大小是否改變,不管時間存取點是否改變
通常用在mirror, 且對方時間不太正確時
-c, --checksum 在傳送之前透過128bit的md4檢查碼來檢查所有要傳送的檔案(會託滿速度);
-a, --archive archive mode 許可權儲存模式,相當於 -rlptgoD 引數。
很快速的儲存幾乎所有的許可權設定,除了硬式連線(透過-H設定)。
-r, --recursive 複製所有下面的資料(透過)
-R, --relative 使用相對路徑
如: rsync foo/bar/foo.c remote:/tmp/ 在遠端產生/tmp/foo.c檔案
rsync -R foo/bar/foo.c remote:/tmp/ 在遠端產生/tmp/foo/bar/foo.c 檔案
-R, --relative 不使用相對路徑
-b, --backup 目的地端先前已經存在的檔案在傳輸或刪除前會被備份
--backup-dir=DIR 設定備份的資料夾
--suffix=SUFFIX 指定備份的檔案名稱字尾形式(預設為~)
-K, --keep-dirlinks 接收方將連線到資料夾的檔案視為資料夾處理
-l, --links 複製所有的連線
-H, --hard-links 保留硬式連結
-p, --perms 保留檔案許可權
-o, --owner 保留檔案所有者(root only)
-g, --group 保留檔案群組
-D, --devices 保留device資訊(root only)
-t, --times 保留時間點
-n, --dry-run 不實際執行傳送, 只顯示將會有的傳輸動作
-S, --sparse 嘗試去處理稀疏的檔案, 讓這些檔案在目的端佔去較少的磁碟空間
-W, --whole-file 複製所有的檔案, 不額外作檢查
--no-whole-file 關閉 --whole-file 引數
-x, --one-file-system 不要跨越檔案系統分界(只在一個檔案系統處理)
-B, --block-size=SIZE 強制透過rsync程式去比對修復block-sizeforce
-e --rsh=COMMAND 定義所試用的remote shell
--rsync-path=PATH 定義rsync在遠端機器存放資料的路徑
--existing 只對比更新目的端已經存在的檔案
--ignore-existing 忽略目的斷已經存在的檔案(也就是不更新)
--delete 刪除傳送斷已經不存在,而目的端存在的檔案
--delete-excluded 除了把傳送端已經不存在, 而目的端存在的檔案刪除之外, 也刪除 --exclude 引數所包含的檔案
--delete-after rsync預設會在檔案傳送前進行相關刪除動作確保接收端有足夠的檔案空間,
單可以透過 --delete-after 讓刪除動作在檔案傳送後在進行刪除
--ignore-errors 忽略任何錯誤即使是I/O error 也進行 --delete 刪除動作
--max-delete=NUM 定義rsync不要刪除超過NUM個檔案
--partial rsync若遇到傳輸過程中斷時, 會把那些已經傳輸的檔案刪除。
在某種狀況下保留那些部分傳送的檔案是令人高興的;
你可以透過 --partial 引數達到這個目的。
--partial-dir=DIR 在 --partial 引數啟動時, 你還是可以定義rsync把那些部分傳送的檔案
寫入定義的資料夾, 而非直接寫入目的端,需要注意的是,
此資料夾不應該被其他試用者可以寫入。(如:/tmp)
--force 當目的端資料夾被傳送端非資料夾名稱覆蓋時, 強制rsync刪除資料夾, 即使該資料夾不是空的。
--numeric-ids 不將傳送端檔案的uid及gid值, 與目的端的使用者/群組進行配對,
若傳送端並沒有uid及gid的對應名稱(如:原帳號群組被刪除的遺留檔案),
或目的端沒有相對應的帳號/群組, 保留數字型式的uid/gid
--timeout=TIMEOUT 設定I/O 超時的時間(秒)。 超過這個秒數而沒有資料傳送, rsync將會結束。 預設為0,也就是沒有定義超時時間
-T, --temp-dir=DIR 定義rsync在接收端產生暫時性的複製檔案時使用資料夾暫存,預設時直接在接收端資料夾直接產生暫存檔案
--compare-dest=DIR 定義rsync在目的端建立資料夾來比對傳送過來的檔案。
--link-dest=DIR 與 --compare-dest 相同,但同時會針對無法改變的檔案建立硬式連結。
-z, --compress 壓縮模式, 當資料在傳送到目的端進行檔案壓縮。
-P -P引數和 --partial --progress 相同。只是為了把引數簡單化。
-C, --cvs-exclude 排除那些通常不希望傳送的檔案, 定義的方式與CVS傳送相同:
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state
.nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej
.del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/
符合以上條件的都會被忽略不傳送。
--exclude=PATTER 符合PATTERN(規則表示式)樣式的檔案不僅行傳送
--exclude-from=FILE 和 --exclude 引數相同, 不過是把不進行傳送的檔案事先寫入某一檔案。
執行時, 透過此引數讓rsync讀取。
(; #開頭的行列或者空白會被rsync忽略)
--include=PATTERN 定義rsync不要排除符合pattern樣式的檔案
--include-from=FILE 和--include引數相同,只不過把要包含的檔案寫到某一檔案。
--files-from=FILE 把要傳送的檔案名稱都精確的寫入某一檔案, 讓rsync讀取。
如: rsync -a --files-from=/tmp/foo /usr remote:/backup
-0 --from0 定義檔案所要讀取的檔案時null字元結尾。
--version 現四版本資訊。
--daemon 定義rsync以daemon型態執行
--no-detach 當以daemon形態執行時,不要進行分裂且變成背景程式。
--address=ADDRESS 定義所要連線(bind)的ip位置或者是host名稱(daemon限定)
--config=FILE 定義所要讀取的設定檔rsyncd.conf位置(daemon限定)
預設值為 /usr/local/etc/rsyncd.conf
--port=PORT 定義rsyncd(daemon)要旨行的port(預設為tcp 873)
--blocking-io 使用blocking I/O連結遠端的shell, 如rsh, remsh
--no-blocking-io 使用non-blocking連結遠端的shell, 如ssh(預設值)
--stats 顯示檔案傳送時的資訊狀態
--progress 顯示傳送的進度。(給檔案傳送時,怕無聊的人用的)
--log-format=FORMAT 定義log的格式(在rsyncd.conf設定)
--password-file=FILE 從檔案讀取與遠端rsync伺服務連結的密碼
--bwlimit=KBPS 定義傳輸頻寬的大小(KBytes/秒)
--write-batch=FILE 把記錄資料寫入一個檔案(給其他相同環境且相同需求的機器試用)
--read-batch=FILE 透過讀取記錄檔案來進行傳輸。(檔案由 --write-batch 引數產生)
--checksum-seed=NUM 定義檔案 checksum-seed 的大小(byte)
-4 --ipv4 使用IPv4協定
-6 --ipv6 使用IPv6協定
3. rsync的配置
3.1 2臺主機建立ssh信任
A機器 192.168.1.1
B機器 192.168.1.2
[[email protected] ~]# ssh-keygen -t rsa 建立證書
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
65:4a:68:cc:6c:23:2b:04:1a:3c:ee:d7:af:e7:e3:8d [email protected]
[[email protected] ~]#
然後把公匙傳到B機的/root/.ssh中:
password:
id_rsa.pub 100% 219 0.2KB/s 00:00
[[email protected] .ssh]#
驗證一下,ssh登陸到B機,是否不需要輸入密碼,如果不用則建立成功
[[email protected] .ssh]# ssh 192.168.1.2
Last login: Fri Jun 6 09:59:28 2008 from 192.168.1.1
[[email protected] ~]#
3.2 伺服器端和客戶端使用
兩臺機器都需要安裝軟體包,這裡不羅嗦了。
伺服器端配置:
rysnc一般是通過xinetd進行啟動管理的。
修改/etc/xinetd.d/rsync,只修改一個地方
# default: off
# description: The rsync server is a good addition to am ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = yes 修改為disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
接下來編輯配置檔案
[[email protected] ~] # cat /etc/rsyncd.conf 該檔案需要新建立
uid = root #root使用者訪問
gid = root #root組使用者訪問
use chroot = no #不能使用chroot
max connections = 9 #最大連線數
list = yes #允許列出檔案清單
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
hosts allow = 192.168.1.2 #只允許這個主機訪問
[data] #釋出項
path = /home/data/ #釋出的路徑
ignore errors
read only = yes #只讀
auth users = root #認證使用者為root
secrets file = /etc/sery.pass #密碼檔案
------------------------------------------------------------------------------
下面是密碼檔案
[[email protected] ~] # cat /etc/sery.pass
root:123456
注意許可權為600
伺服器端配置完成,客戶端只需要安裝rsync包即可
接下來建立密碼檔案
[[email protected] ~] # cat /etc/sery.pass
123456 #這裡只需要輸入伺服器端密碼檔案中定義的密碼即可。
注意許可權為600
使用命令開始同步
[[email protected] ~] # rsync -aSvH --password-file=/etc/sery.pass [email protected]::data /home/
解釋:
--password-file=/etc/sery.pass 這段是密碼檔案,如果不加這段,需要手動輸入伺服器端定義好的密碼。
如果檔案比較大,可以使用nohup將進城放在後臺執行,
[[email protected] ~] # nohup rsync -aSvH --password-file=/etc/sery.pass [email protected]::data /home/ >rsync.log &
上面的表示將遠端機器192.168.1.2機器上釋出的data目錄,同步到本地機器的/home/目錄下。
4. rsync的簡單使用
提示輸入192.168.1.2機器的root使用者密碼,輸入即可開始同步。
引數解釋:
a 等同於 -rlptgoD 歸檔模式,就是保持檔案所有屬性、許可權不變
S 有效的處理零散檔案
v verbose模式
H 保持hard links
上面這個表示 將本機的/home/目錄下所有的檔案,同步到192.168.1.2機器的/home/目錄下……上面紅色標記是原始檔位置藍色標記是目的位置
如果想每次同步之後,兩邊的檔案保持一致,需要新增引數--delete,新增這個引數時,一定要注意測試,否則會造成嚴重後果,刪除了資料。
[[email protected] ~]# rsync -aSvH --delete /home/ [email protected]:/home/
上面這條表示,將遠端機器192.168.1.2機器上的/home/目錄下所有的檔案,同步到本地的/home/目錄下,同步的時候注意源和目的,前面的是原始檔位置,後面的目的檔案位置
上面的命令,執行的時候,需要輸入192.168.1.2機器的root使用者密碼,這樣很煩,可以兩臺機器做個ssh信任,省去每次輸入密碼,在新增crontab自動執行。自動同步資料。
相關推薦
Linux下rsync命令用法
目錄概述: rsync工具簡介 1. rsync用法 2. rsync 引數說明 3. rsync的配置 3.1 2臺主機建立ssh信任 3.2 伺服
Linux下shell命令用法和例項總結:du
完整的Linux下Shell命令總結歸檔於IT老兵部落格。 命令格式 du [選項] [檔案] 命令功能 du(disk usage 的簡稱)命令用於檢查計算機上檔案和目錄的磁碟使用情況,可以遞迴顯示檔案和目錄。顯示每個檔案和目錄的磁碟使用空間。 命令引數
Linux下cut命令用法詳解
Linux下cut命令用法詳解 原創:frozen_sucker(冰棍) 有時我們經常會遇到這樣一些問題:有一頁電話號碼薄,上面按順序規則地寫著人名、家庭
Linux下history命令用法
如果你經常使用 Linux 命令列,那麼使用># export HISTTIMEFORMAT='%F %T ' #># [Press Ctrl+R from the command prompt, which will display the reverse-i
C語言再學習 -- Linux下find命令用法
linux下查詢檔案的命令有兩個:locate 和 find 首先說一下locate: 這個命名是對其生成的資料庫進行遍歷(生成資料庫的命令:uodatedb),這一特性決定了用locate查詢檔案速度很快,但是locate命令只能對檔案進行模糊匹配,在精度上來說差了點,
Linux下rsync的用法
一、rsync的概述 rsync是類unix系統下的資料映象備份工具,從軟體的命名上就可以看出來了——remote sync。rsync是Linux系統下的檔案同步和資料傳輸工具,它採用“rsync”演算法,可以將一個客戶機和遠端檔案伺服器之間的檔案同步,也可以在本地系
Linux下diff命令用法詳解
大家好,我是良許。 我們在平時工作的時候,經常要知道兩個檔案之間,以及同個檔案不同版本之間有何異同點。在 Windows 下,有 beyond compare 這個好用的工具,而在 Linux 下,也有很多很強大的工具,良許之前也寫過一篇文章介紹: [Linux下9種優秀的程式碼比對工具推薦](https
Linux下 ls 命令的高階用法8例
在Linux下,ls這個命令大家肯定太熟悉了,良許相信只要是Linux工程師,每天都會離不開這個命令,而且一天會使用個幾百次。但是,除了 ls -l 以外,你還知 ls 的哪些高階用法呢?良許今天為大家介紹 ls 命令的8種高階用法。 假如我們有這樣的一個資料夾,我們用tree命令檢視它的目錄結構:
8 個 Linux 下 ls 命令的高階用法!個個驚豔!
作者 | 良許 責編 | 胡巍巍 在Linux下,ls這個命令大家肯定太熟悉了,筆者相信只要是Linux工程師,每天都會離不開這個命令,而且一天會使用個幾百次。 但是,除了ls -l以外,你還知ls的哪些高階用法呢?筆者今天為大家介紹ls命令的8種高階用法。
linux下常用命令與常用操作用法及解釋(初學者必備)
1、環境變數 (1)列印環境變數:ehco $PATH (2)新增到環境變數(一般放在當前使用者的宿主目錄~/下的.bashrc檔案裡):export PATH=/usr/local/bin:$PATH 解釋:每一次
linux下ps命令 和 grep命令用法
inux上程序有5種狀態: 1. 執行(正在執行或在執行佇列中等待) 2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號) 3. 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生) 4. 僵死(程序已終止, 但程序描述符存在, 直到父程序
Linux下gdb除錯用法命令
一直在Fedora平臺下寫opencv的程式,需要對程式進行除錯,主要用的除錯工具是gdb. gdb提供瞭如下功能: 1.在程式中設定斷點,Debug時遇到斷點處暫停 2.可以監視某個變數,並利用print函式將該變數的值打印出來 3.程式可step-by-
linux下rename命令的用法——適合大批量修改檔名
linux下rename命令的用法——適合大批量修改檔名 在看鳥哥私房菜的時候,遇到了mv這個可以修改檔名的命令。後面還有一個命令,叫rename。鳥哥讓自己man幫助查詢。結果自己一看,發現這個命令居然可以批量的修改檔名。首先,看下man幫助裡面的說明: For example, given the fi
Linux下常用命令之sed學習總結
linux sed sed命令 正則表達式 sed總結 Sed功能說明:Sed是linux下一個強大的文本文件處理工具,通過對文件增加、刪除、查找、查詢操作,配合正則表達式以實現工作中的各種需求。同時也是一名運維人員必須掌握的核心技能。---------------------------
linux下cat命令詳解
forever ron localhost root sta testing 幫助 查看 一點 1、cat 顯示文件連接文件內容的工具; cat 是一個文本文件查看和連接工具。查看一個文件的內容,用cat比較簡單,就是cat 後面直接接文件名。 比如: de>[[
linux下alias命令具體解釋
margin san 登錄 white gre con 變量 每次 ext linux下alias命令具體解釋 用途說明 設置命令的別名。在linux系統中假設命令太長又不符合用戶的習慣,那麽我們能夠為它指定一個別名。盡管能夠為命令建立“鏈接” 解決長文件名
linux下yum命令出現Loaded plugins: fastestmirror
tle enable yum test enabled net post sdn http linux下yum命令出現Loaded plugins: fastestmirror yum install的時候提示:Loaded plugins: fastestmirror
linux下wget命令,支持斷點續傳,ftp、http、https等協議
strong 工作 等待 命名 wget命令 source cmd itl 操作 轉載的地址:http:[email protected]/* *//blog/static/32097310201171833420905/ 今天操作遠端機器的時候發現少一個安裝
Linux下Diff命令
普通 命令 圖形化 標準輸入 們的 sina 工具 文件 內容 一般正常比較兩個文件用vimdiff,算是直接進入vim界面,如果比較兩個文件夾下面的文件,可以用diff,註意,這裏只會比較文件夾下面的同名文件,他會列出不一樣的點. 參考Linux下Diff命令使用方法 d
Linux下基礎命令(一)
linux find 實戰操作 每天積累知識就會有成長,只要付出在不久的將來一定會有收獲,可能回來的晚點,但是一定要貴在堅持,今天第一次發博客,如不出意外情況我每天都會發的,這個是我總結的find命令的一些實戰,希望我總結的知識點在今後會對大家有幫助。find -name "*a" #以a