国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

如何使用Linux的rsync

發(fā)布時(shí)間:2021-08-15 18:37 來(lái)源: 閱讀:0 作者:阮一峰 欄目: 服務(wù)器 歡迎投稿:712375056

目錄

      一、簡(jiǎn)介

      rsync 是一個(gè)常用的 Linux 應用程序,用于文件同步。

      它可以在本地計算機與遠程計算機之間,或者兩個(gè)本地目錄之間同步文件(但不支持兩臺遠程計算機之間的同步)。它也可以當作文件復制工具,替代cpmv命令。

      它名稱(chēng)里面的r指的是 remote,rsync 其實(shí)就是"遠程同步"(remote sync)的意思。與其他文件傳輸工具(如 FTP 或 scp)不同,rsync 的最大特點(diǎn)是會(huì )檢查發(fā)送方和接收方已有的文件,僅傳輸有變動(dòng)的部分(默認規則是文件大小或修改時(shí)間有變動(dòng))。

      二、安裝

      如果本機或者遠程計算機沒(méi)有安裝 rsync,可以用下面的命令安裝。

      # Debian

      $ sudo apt-get install rsync

      # Red Hat

      $ sudo yum install rsync

      # Arch Linux

      $ sudo pacman -S rsync

      注意,傳輸的雙方都必須安裝 rsync。

      三、基本用法

      3.1、-r參數

      本機使用 rsync 命令時(shí),可以作為cpmv命令的替代方法,將源目錄同步到目標目錄。

      $ rsync -r source destination

      上面命令中,-r表示遞歸,即包含子目錄。注意,-r是必須的,否則 rsync 運行不會(huì )成功。source目錄表示源目錄,destination表示目標目錄。

      如果有多個(gè)文件或目錄需要同步,可以寫(xiě)成下面這樣。

      $ rsync -r source1 source2 destination

      上面命令中,source1、source2都會(huì )被同步到destination目錄。

      3.2、-a參數

      -a參數可以替代-r,除了可以遞歸同步以外,還可以同步元信息(比如修改時(shí)間、權限等)。由于 rsync 默認使用文件大小和修改時(shí)間決定文件是否需要更新,所以-a-r更有用。下面的用法才是常見(jiàn)的寫(xiě)法。

      $ rsync -a source destination

      目標目錄destination如果不存在,rsync 會(huì )自動(dòng)創(chuàng )建。執行上面的命令后,源目錄source被完整地復制到了目標目錄destination下面,即形成了destination/source的目錄結構。

      如果只想同步源目錄source里面的內容到目標目錄destination,則需要在源目錄后面加上斜杠。

      $ rsync -a source/ destination

      上面命令執行后,source目錄里面的內容,就都被復制到了destination目錄里面,并不會(huì )在destination下面創(chuàng )建一個(gè)source子目錄。

      3.3、-n參數

      如果不確定 rsync 執行后會(huì )產(chǎn)生什么結果,可以先用-n--dry-run參數模擬執行的結果。

      $ rsync -anv source/ destination

      上面命令中,-n參數模擬命令執行的結果,并不真的執行命令。-v參數則是將結果輸出到終端,這樣就可以看到哪些內容會(huì )被同步。

      3.4、--delete 參數

      默認情況下,rsync 只確保源目錄的所有內容(明確排除的文件除外)都復制到目標目錄。它不會(huì )使兩個(gè)目錄保持相同,并且不會(huì )刪除文件。如果要使得目標目錄成為源目錄的鏡像副本,則必須使用--delete參數,這將刪除只存在于目標目錄、不存在于源目錄的文件。

      $ rsync -av --delete source/ destination

      上面命令中,--delete參數會(huì )使得destination成為source的一個(gè)鏡像。

      四、排除文件

      4.1、--exclude 參數

      有時(shí),我們希望同步時(shí)排除某些文件或目錄,這時(shí)可以用--exclude參數指定排除模式。

      $ rsync -av --exclude='*.txt' source/ destination

      # 或者

      $ rsync -av --exclude '*.txt' source/ destination

      上面命令排除了所有 TXT 文件。

      注意,rsync 會(huì )同步以"點(diǎn)"開(kāi)頭的隱藏文件,如果要排除隱藏文件,可以這樣寫(xiě)--exclude=".*"。

      如果要排除某個(gè)目錄里面的所有文件,但不希望排除目錄本身,可以寫(xiě)成下面這樣。

      $ rsync -av --exclude 'dir1/*' source/ destination

      多個(gè)排除模式,可以用多個(gè)--exclude參數。

      $ rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination

      多個(gè)排除模式也可以利用 Bash 的大擴號的擴展功能,只用一個(gè)--exclude參數。

      $ rsync -av --exclude={'file1.txt','dir1/*'} source/ destination

      如果排除模式很多,可以將它們寫(xiě)入一個(gè)文件,每個(gè)模式一行,然后用--exclude-from參數指定這個(gè)文件。

      $ rsync -av --include="*.txt" --exclude='*' source/ destination

      4.2、--include 參數

      --include參數用來(lái)指定必須同步的文件模式,往往與--exclude結合使用。

      $ rsync -av --include="*.txt" --exclude='*' source/ destination

      上面命令指定同步時(shí),排除所有文件,但是會(huì )包括 TXT 文件。

      五、遠程同步

      5.1、SSH 協(xié)議

      rsync 除了支持本地兩個(gè)目錄之間的同步,也支持遠程同步。它可以將本地內容,同步到遠程服務(wù)器。

      $ rsync -av source/ username@remote_host:destination

      也可以將遠程內容同步到本地。

      $ rsync -av username@remote_host:source/ destination

      rsync 默認使用 SSH 進(jìn)行遠程登錄和數據傳輸。

      由于早期 rsync 不使用 SSH 協(xié)議,需要用-e參數指定協(xié)議,后來(lái)才改的。所以,下面-e ssh可以省略。

      $ rsync -av -e ssh source/ user@remote_host:/destination

      但是,如果 ssh 命令有附加的參數,則必須使用-e參數指定所要執行的 SSH 命令。

      $ rsync -av -e 'ssh -p 2234' source/ user@remote_host:/destination

      上面命令中,-e參數指定 SSH 使用2234端口。

      5.2、rsync 協(xié)議

      除了使用 SSH,如果另一臺服務(wù)器安裝并運行了 rsync 守護程序,則也可以用rsync://協(xié)議(默認端口873)進(jìn)行傳輸。具體寫(xiě)法是服務(wù)器與目標目錄之間使用雙冒號分隔::。

      $ rsync -av source/ 192.168.122.32::module/destination

      注意,上面地址中的module并不是實(shí)際路徑名,而是 rsync 守護程序指定的一個(gè)資源名,由管理員分配。

      如果想知道 rsync 守護程序分配的所有 module 列表,可以執行下面命令。

      $ rsync rsync://192.168.122.32

      rsync 協(xié)議除了使用雙冒號,也可以直接用rsync://協(xié)議指定地址。

      $ rsync -av source/ rsync://192.168.122.32/module/destination

      六、增量備份

      rsync 的最大特點(diǎn)就是它可以完成增量備份,也就是默認只復制有變動(dòng)的文件。

      除了源目錄與目標目錄直接比較,rsync 還支持使用基準目錄,即將源目錄與基準目錄之間變動(dòng)的部分,同步到目標目錄。

      具體做法是,第一次同步是全量備份,所有文件在基準目錄里面同步一份。以后每一次同步都是增量備份,只同步源目錄與基準目錄之間有變動(dòng)的部分,將這部分保存在一個(gè)新的目標目錄。這個(gè)新的目標目錄之中,也是包含所有文件,但實(shí)際上,只有那些變動(dòng)過(guò)的文件是存在于該目錄,其他沒(méi)有變動(dòng)的文件都是指向基準目錄文件的硬鏈接。

      --link-dest參數用來(lái)指定同步時(shí)的基準目錄。

      $ rsync -a --delete --link-dest /compare/path /source/path /target/path

      上面命令中,--link-dest參數指定基準目錄/compare/path,然后源目錄/source/path跟基準目錄進(jìn)行比較,找出變動(dòng)的文件,將它們拷貝到目標目錄/target/path。那些沒(méi)變動(dòng)的文件則會(huì )生成硬鏈接。這個(gè)命令的第一次備份時(shí)是全量備份,后面就都是增量備份了。

      下面是一個(gè)腳本示例,備份用戶(hù)的主目錄。

      #!/bin/bash
      
      # A script to perform incremental backups using rsync
      
      set -o errexit
      set -o nounset
      set -o pipefail
      
      readonly SOURCE_DIR="${HOME}"
      readonly BACKUP_DIR="/mnt/data/backups"
      readonly DATETIME="$(date '+%Y-%m-%d_%H:%M:%S')"
      readonly BACKUP_PATH="${BACKUP_DIR}/${DATETIME}"
      readonly LATEST_LINK="${BACKUP_DIR}/latest"
      
      mkdir -p "${BACKUP_DIR}"
      
      rsync -av --delete \
        "${SOURCE_DIR}/" \
        --link-dest "${LATEST_LINK}" \
        --exclude=".cache" \
        "${BACKUP_PATH}"
      
      rm -rf "${LATEST_LINK}"
      ln -s "${BACKUP_PATH}" "${LATEST_LINK}"

      上面腳本中,每一次同步都會(huì )生成一個(gè)新目錄${BACKUP_DIR}/${DATETIME},并將軟鏈接${BACKUP_DIR}/latest指向這個(gè)目錄。下一次備份時(shí),就將${BACKUP_DIR}/latest作為基準目錄,生成新的備份目錄。最后,再將軟鏈接${BACKUP_DIR}/latest指向新的備份目錄。

      七、配置項

      -a、--archive參數表示存檔模式,保存所有的元數據,比如修改時(shí)間(modification time)、權限、所有者等,并且軟鏈接也會(huì )同步過(guò)去。

      --append參數指定文件接著(zhù)上次中斷的地方,繼續傳輸。

      --append-verify參數跟--append參數類(lèi)似,但會(huì )對傳輸完成后的文件進(jìn)行一次校驗。如果校驗失敗,將重新發(fā)送整個(gè)文件。

      -b、--backup參數指定在刪除或更新目標目錄已經(jīng)存在的文件時(shí),將該文件更名后進(jìn)行備份,默認行為是刪除。更名規則是添加由--suffix參數指定的文件后綴名,默認是~。

      --backup-dir參數指定文件備份時(shí)存放的目錄,比如--backup-dir=/path/to/backups。

      --bwlimit參數指定帶寬限制,默認單位是 KB/s,比如--bwlimit=100。

      -c、--checksum參數改變rsync的校驗方式。默認情況下,rsync 只檢查文件的大小和最后修改日期是否發(fā)生變化,如果發(fā)生變化,就重新傳輸;使用這個(gè)參數以后,則通過(guò)判斷文件內容的校驗和,決定是否重新傳輸。

      --delete參數刪除只存在于目標目錄、不存在于源目標的文件,即保證目標目錄是源目標的鏡像。

      -e參數指定使用 SSH 協(xié)議傳輸數據。

      --exclude參數指定排除不進(jìn)行同步的文件,比如--exclude="*.iso"。

      --exclude-from參數指定一個(gè)本地文件,里面是需要排除的文件模式,每個(gè)模式一行。

      --existing、--ignore-non-existing參數表示不同步目標目錄中不存在的文件和目錄。

      -h參數表示以人類(lèi)可讀的格式輸出。

      -h、--help參數返回幫助信息。

      -i參數表示輸出源目錄與目標目錄之間文件差異的詳細情況。

      --ignore-existing參數表示只要該文件在目標目錄中已經(jīng)存在,就跳過(guò)去,不再同步這些文件。

      --include參數指定同步時(shí)要包括的文件,一般與--exclude結合使用。

      --link-dest參數指定增量備份的基準目錄。

      -m參數指定不同步空目錄。

      --max-size參數設置傳輸的最大文件的大小限制,比如不超過(guò)200KB(--max-size='200k')。

      --min-size參數設置傳輸的最小文件的大小限制,比如不小于10KB(--min-size=10k)。

      -n參數或--dry-run參數模擬將要執行的操作,而并不真的執行。配合-v參數使用,可以看到哪些內容會(huì )被同步過(guò)去。

      -P參數是--progress--partial這兩個(gè)參數的結合。

      --partial參數允許恢復中斷的傳輸。不使用該參數時(shí),rsync會(huì )刪除傳輸到一半被打斷的文件;使用該參數后,傳輸到一半的文件也會(huì )同步到目標目錄,下次同步時(shí)再恢復中斷的傳輸。一般需要與--append--append-verify配合使用。

      --partial-dir參數指定將傳輸到一半的文件保存到一個(gè)臨時(shí)目錄,比如--partial-dir=.rsync-partial。一般需要與--append--append-verify配合使用。

      --progress參數表示顯示進(jìn)展。

      -r參數表示遞歸,即包含子目錄。

      --remove-source-files參數表示傳輸成功后,刪除發(fā)送方的文件。

      --size-only參數表示只同步大小有變化的文件,不考慮文件修改時(shí)間的差異。

      --suffix參數指定文件名備份時(shí),對文件名添加的后綴,默認是~。

      -u、--update參數表示同步時(shí)跳過(guò)目標目錄中修改時(shí)間更新的文件,即不同步這些有更新的時(shí)間戳的文件。

      -v參數表示輸出細節。-vv表示輸出更詳細的信息,-vvv表示輸出最詳細的信息。

      --version參數返回 rsync 的版本。

      -z參數指定同步時(shí)壓縮數據。

      以上就是如何使用Linux的rsync的詳細內容,更多關(guān)于Linux rsync的資料請關(guān)注腳本之家其它相關(guān)文章!

      免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

      在线观看免费av网| 一边摸一边做爽的视频17国产| 国产精品白丝JK黑袜喷水视频| 亚洲国产精品综合久久2007| 色妞色综合久久夜夜| 日韩AV影院在线观看|