最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用Linux的rsync

 更新時間:2021年06月25日 14:36:51   作者:阮一峰  
rsync是linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地復制,或者與其他SSH、rsync主機同步

一、簡介

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

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

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

二、安裝

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

# Debian

$ sudo apt-get install rsync

# Red Hat

$ sudo yum install rsync

# Arch Linux

$ sudo pacman -S rsync

注意,傳輸?shù)碾p方都必須安裝 rsync。

三、基本用法

3.1、-r參數(shù)

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

$ rsync -r source destination

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

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

$ rsync -r source1 source2 destination

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

3.2、-a參數(shù)

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

$ rsync -a source destination

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

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

$ rsync -a source/ destination

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

3.3、-n參數(shù)

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

$ rsync -anv source/ destination

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

3.4、--delete 參數(shù)

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

$ rsync -av --delete source/ destination

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

四、排除文件

4.1、--exclude 參數(shù)

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

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

# 或者

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

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

注意,rsync 會同步以"點"開頭的隱藏文件,如果要排除隱藏文件,可以這樣寫--exclude=".*"。

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

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

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

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

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

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

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

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

4.2、--include 參數(shù)

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

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

上面命令指定同步時,排除所有文件,但是會包括 TXT 文件。

五、遠程同步

5.1、SSH 協(xié)議

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

$ rsync -av source/ username@remote_host:destination

也可以將遠程內(nèi)容同步到本地。

$ rsync -av username@remote_host:source/ destination

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

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

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

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

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

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

5.2、rsync 協(xié)議

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

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

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

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

$ rsync rsync://192.168.122.32

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

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

六、增量備份

rsync 的最大特點就是它可以完成增量備份,也就是默認只復制有變動的文件。

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

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

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

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

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

下面是一個腳本示例,備份用戶的主目錄。

#!/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}"

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

七、配置項

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

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

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

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

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

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

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

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

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

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

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

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

-h參數(shù)表示以人類可讀的格式輸出。

-h、--help參數(shù)返回幫助信息。

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

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

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

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

-m參數(shù)指定不同步空目錄。

--max-size參數(shù)設置傳輸?shù)淖畲笪募拇笮∠拗?,比如不超過200KB(--max-size='200k')。

--min-size參數(shù)設置傳輸?shù)淖钚∥募拇笮∠拗?,比如不小?0KB(--min-size=10k)。

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

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

--partial參數(shù)允許恢復中斷的傳輸。不使用該參數(shù)時,rsync會刪除傳輸?shù)揭话氡淮驍嗟奈募皇褂迷搮?shù)后,傳輸?shù)揭话氲奈募矔降侥繕四夸?,下次同步時再恢復中斷的傳輸。一般需要與--append--append-verify配合使用。

--partial-dir參數(shù)指定將傳輸?shù)揭话氲奈募4娴揭粋€臨時目錄,比如--partial-dir=.rsync-partial。一般需要與--append--append-verify配合使用。

--progress參數(shù)表示顯示進展。

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

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

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

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

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

-v參數(shù)表示輸出細節(jié)。-vv表示輸出更詳細的信息,-vvv表示輸出最詳細的信息。

--version參數(shù)返回 rsync 的版本。

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

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

相關文章

  • Linux體檢,了解你的Linux狀態(tài)(網(wǎng)絡IO,磁盤,CPU,內(nèi)存)

    Linux體檢,了解你的Linux狀態(tài)(網(wǎng)絡IO,磁盤,CPU,內(nèi)存)

    這篇文章主要介紹了為Linux做個檢查,了解你的Linux的狀態(tài),學會查看linux各種狀態(tài),包括:網(wǎng)絡IO、磁盤、CPU、內(nèi)存等; 學會理解命令所代表的含義,能夠迅速發(fā)現(xiàn)集群存在的問題
    2021-08-08
  • Linux中Docker遇到報port?is?already?allocated錯誤

    Linux中Docker遇到報port?is?already?allocated錯誤

    在Linux系統(tǒng)中,如果嘗試綁定一個網(wǎng)絡服務到一個已經(jīng)被其他進程使用的端口上,你會遇到“port?is?already?allocated”錯誤,這意味著該端口已經(jīng)被另一個進程占用,因此無法再次被分配給任何新的服務
    2024-06-06
  • CentOS7環(huán)境下gcc(版本10.2.0)升級詳細過程

    CentOS7環(huán)境下gcc(版本10.2.0)升級詳細過程

    大家好,本篇文章主要講的是CentOS7環(huán)境下gcc(版本10.2.0)升級詳細過程,感興趣的同學快來看一看吧,希望對你有幫助
    2021-11-11
  • Linux多線程環(huán)境下 關于進程線程終止函數(shù)總結

    Linux多線程環(huán)境下 關于進程線程終止函數(shù)總結

    下面小編就為大家?guī)硪黄狶inux多線程環(huán)境下 關于進程線程終止函數(shù)總結。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • sersync實現(xiàn)數(shù)據(jù)實時同步的方法

    sersync實現(xiàn)數(shù)據(jù)實時同步的方法

    下面小編就為大家分享一篇sersync實現(xiàn)數(shù)據(jù)實時同步的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Linux中改變文件權限的chmod命令詳析

    Linux中改變文件權限的chmod命令詳析

    在 Linux 命令中,chmod用于修改文件或者目錄的權限。下面這篇文章主要給大家介紹了關于Linux中改變文件權限的chmod命令的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面來一學習學習吧
    2018-06-06
  • Linux 為特定的用戶或用戶組啟用或禁用 SSH的方法

    Linux 為特定的用戶或用戶組啟用或禁用 SSH的方法

    這篇文章主要介紹了如何在 Linux 上為特定的用戶或用戶組啟用或禁用 SSH,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • kali linux 系統(tǒng)版本的查看方法

    kali linux 系統(tǒng)版本的查看方法

    今天小編就為大家分享一篇kali linux 系統(tǒng)版本的查看方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Linux 自動分區(qū)、格式化、掛載腳本詳解

    Linux 自動分區(qū)、格式化、掛載腳本詳解

    這篇文章主要介紹了Linux 自動分區(qū)、格式化、掛載腳本詳解的相關資料,自動檢測是否有尚未分區(qū)的數(shù)據(jù)盤,格式化新的數(shù)據(jù)盤并自動掛載,需要的朋友可以參考下
    2016-12-12
  • linux下wget命令的基本使用方法

    linux下wget命令的基本使用方法

    大家好,本篇文章主要講的是linu下wget命令的基本使用方法,感興趣的同學趕快來看一看,對你有幫助的話記得收藏一下哦,方便下次瀏覽
    2021-12-12

最新評論

沭阳县| 沭阳县| 常熟市| 留坝县| 四子王旗| 离岛区| 乐安县| 双牌县| 琼海市| 万盛区| 绥宁县| 大丰市| 黄陵县| 淮滨县| 武义县| 蒲城县| 灵丘县| 商洛市| 英山县| 伊宁市| 江油市| 房山区| 射阳县| 罗源县| 类乌齐县| 新干县| 德保县| 屏山县| 古蔺县| 托克逊县| 漳平市| 平阳县| 文安县| 封丘县| 栖霞市| 保定市| 奎屯市| 宁都县| 清丰县| 洞头县| 玉林市|