rsync新手教程:安装、基本使用、同步、备份...
简介
rsync是一款常用的Linux文件同步应用程序。
可以在本地计算机和远程计算机之间,或两个本地文件夹之间同步文件(但不支持远程计算机之间的同步)。它还可以用作文件复制工具,替换命令cp和mv。
其名称中的r指的是remote,rsync代表“远程同步”。与其他文件传输工具(例如 FTP 或 scp)不同,rsync 的主要特点是发送方和接收方检查现有文件并仅传输已更改的部分(通常的规则是文件大小或修改时间。已更改)。
虽然rsync不包含在SSH工具中,但这里包含它是因为它也是远程操作。
安装
如果本地或远程计算机上未安装rsync,可以使用以下命令进行安装。
# Debian
$ sudo apt-get install rsync
# Red Hat
$ sudo yum install rsync
# Arch Linux
$ sudo pacman -S rsync
注意传输双方都必须安装rsync。
基本用法
rsync 可用于同步本地计算机上的两个文件夹。下面以本地同步为例,讲解rsync的很多关键参数的使用。
-r 参数
使用原生 rsync 命令时,可以代替 cp 和 ♽ 到 ♽ 目录命令的目标目录。
$ rsync -r source destination
上述命令中,-r表示返回,即包含子目录。注意需要-r,否则rsync会失败。 source 代表源文件夹,destination 代表目标文件夹。执行上述命令后,目标目录中会出现子目录destination/source。
如果需要合并的文件或文件夹较多,可以这样写。
$ rsync -r source1 source2 destination
在上面的命令中, 目标号码 如果您只想将源目录 上述命令完成后, 如果不确定执行rsync后的结果是什么,可以先使用 上述命令中,参数 默认情况下,rsync 仅确保源目录的所有内容(明确排除的文件除外)复制到目标目录。它不允许两个文件夹相同,并且不会删除文件。如果要使目标目录成为源目录的副本,则必须使用 在上面的命令中, 有时,您希望在同步过程中排除某些文件或文件夹。这种情况下,我们可以使用参数 以上命令不包含所有TXT文件。 请注意,rsync 将同步以“点”开头的加密文件。要排除隐藏文件,您可以输入 如果你想排除某个文件夹中的所有文件,但又不想排除该文件夹本身,可以这样写。 对于多种排除方法,可以使用参数 多个排除模块也可以利用 Bash 强大的扩展功能,仅使用 如果有多个排除模式,您可以将它们写入一个文件中,每个模式一行,然后使用标签 指定上述命令同步时,不会包含所有文件,但会包含TXT文件。 rsync 除了支持两个本地目录之间的同步之外,rsync还支持远程同步。可以将本地内容同步到远程服务器。 您还可以将远程内容与本地内容同步。 rsync 默认使用 SSH 进行远程访问和数据传输。 由于rsync原本并没有使用SSH协议,所以需要用 但是,如果 ssh 命令有附加参数,则必须使用 上述命令中,参数 注意,上面地址中的 如果您想了解rsync守护进程提供的所有模块的列表,您可以运行以下命令。除了使用 rsync协议中的两个参数外,还可以直接使用 rsync的主要特点是支持增量备份,这意味着默认情况下只复制发生变化的文件。 除了源目录和目标目录直接同步之外,rsync还支持使用根目录,即将源目录和根目录之间的更改合并到目标目录中。 特殊的做法是,第一个设置是全量备份,所有文件都合并到主文件夹中。下一次同步将是增量备份。仅合并源文件夹和基础文件夹之间发生更改的部分,并且该部分将保存在新的目标文件夹中。这个新的目标文件夹也包含了所有文件,但实际上这个文件夹中只有变化的文件,其他未变化的文件都是指向主文件夹文件的硬链接。 上述命令中,参数 与根目录进行比较。对比,找到改动的文件,复制到目标目录 下面是支持用户目录的示例脚本。 在上面的脚本中,每次同步都会创建一个新文件夹source1和source2将与-a组合参数-a即可替换符号-r。除了迭代同步之外,还可以聚合元信息(例如修改时间、权限等)。因为 rsync 默认使用文件大小和修改时间来确定文件是否需要更新,所以 -a 比 -r 更有用。以下用法是标准拼写。 $ rsync -a source destination
destinasyon如果不存在,rsync将自动创建它。执行上述命令后,源文件夹source被完整复制到目标文件夹destination,创建文件夹结构❀♽。 source 的内容与目标目录destination 相匹配,则需要添加源斜杠。 $ rsync -a source/ destination
source的内容会复制到destination文件夹中的destination文件夹中,并且不会在下面 那个目录。 源子目录。 -n参数-n”或”或”来模拟谋杀的结果。 $ rsync -anv source/ destination
-n预测命令执行结果,不执行命令。符号-v将结果输出到终端,这样你就可以看到要编辑的内容。 --delete 参数--delete参数,该参数将删除仅存在于目标目录中而不存在于源目录中的文件。 $ rsync -av --delete source/ destination
--删除将使目的地成为❀源的镜像。 排除文件
--排除 参数 --exclude来指定排除方法。 $ rsync -av --exclude='*.txt' source/ destination
# 或者
$ rsync -av --exclude '*.txt' source/ destination
--exclude=".*"。 $ rsync -av --exclude 'dir1/*' source/ destination
--排除。 $ rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination
--exclude 参数。 $ rsync -av --exclude={'file1.txt','dir1/*'} source/ destination
--exclude-from 定义此文件。 $ rsync -av --exclude-from='exclude-file.txt' source/ destination
--include参数 --include参数用于指定必须包含的文件格式,通常与-♽de一起使用。 $ rsync -av --include="*.txt" --exclude='*' source/ destination
远程同步
SSH协议
$ rsync -av source/ username@remote_host:destination
$ rsync -av username@remote_host:source/ destination
-e来指定协议,后来改了。所以下面的-e ssh可以去掉。 $ rsync -av -e ssh source/ user@remote_host:/destination
-e 来指定要执行的 SSH 命令。 $ rsync -av -e 'ssh -p 2234' source/ user@remote_host:/destination
-e指定SSH使用2234端口。也可以使用协议 rsync://(默认端口 873)进行传输。一种特殊的写法是用两个冒号分隔服务器和目标目录::。 $ rsync -av source/ 192.168.122.32::module/destination
module不是实际的路径名,而是rsync守护进程的资源名称,由管理员分配。 $ rsync rsync://192.168.122.32
rsync协议://指定地址。 $ rsync -av source/ rsync://192.168.122.32/module/destination
增量备份
--link-dest 用于指定同步的基目录。 $ rsync -a --delete --link-dest /compare/path /source/path /target/path
--link-dest指定基目录/compare/path,然后/ / / # Debian
$ sudo apt-get install rsync
# Red Hat
$ sudo yum install rsync
# Arch Linux
$ sudo pacman -S rsync
/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}文件夹。 。下次备份时,以${BACKUP_DIR}/latest为基目录创建新的备份目录。最后,将软链接${BACKUP_DIR}/latest指向新的备份目录。元素-a、--archive表示归档方式,保存所有元数据,例如修改时间(修改时间)等。并且软件链接也会被编译。 --append该标志指定文件从上次中断的位置恢复传输。 --append-verify与--append相同,但会在传输完成后验证文件。如果验证失败,将返回整个文件。 -b、--backup指定当目标目录中的现有文件被删除或更新时,对该文件进行重命名,然后进行备份。默认行为是删除。重命名规则是添加--suffix定义的文件后缀。默认为~。参数--backup-dir指定备份时保存文件的目录,如--backup-dir=/path/to/backups。参数--bwlimit指定带宽限制。常用单位为KB/s,如--bwlimit=100。 -c、--checksum更改rsync的校验和方法。默认情况下,rsync仅检查文件大小和上次修改日期是否发生变化,如果发生变化,则重新运行;使用该参数后,通过判断文件内容来决定重新发送。 --delete符号删除只存在于目标目录中而源目标中不存在的文件,这样可以确保目标目录是源目标的镜像。 -e参数指定使用SSH协议传输数据。 --exclude 参数指定排除不兼容的文件,例如 --exclude="*.iso"。参数--exclude-from指定本地文件,其中包含要排除的文件的模式,每个模式一行。 --已存在的、--忽略-不存在的表示目标目录中不存在的文件和文件夹。符号 -h 表示以人类可读格式输出。 -h、--help返回帮助信息。 -i符号表示输出源目录和目标目录之间的文件差异的详细信息。标志--ignore-existing表示如果目标目录中仍然存在该文件,则该文件将被忽略,并且不会编辑这些文件。 --include 参数指定同步期间要包含的文件,通常与 --exclude 结合使用。 --link-dest参数指定增量备份的基目录。参数 -m 指定不始终配置目录。参数--max-size设置上传的最大文件大小限制,例如不超过200KB(--max-size='200k')。 --min-size参数设置要传输的最小文件大小限制,例如不少于10KB(--min-size=10k)。符号 -n 或符号 --dry-run 模拟要执行的操作,而不实际执行它。与 -v 标签一起使用可查看要关注的内容。参数-P是两个参数 - 进度和 - 部分的组合。符号--部分 可以使中断的传输继续进行。当不使用此参数时,rsync将删除传输中途中断的文件;使用此参数后,已传输一半的文件将合并到目标文件夹中,并在下次同步时恢复中断的传输。 。一般需要与--输入或--勾选一起使用。 --partial-dir参数指定将部分传输的文件保存到临时目录,例如--partial-dir=.rsync-partial。一般需要与--输入或--勾选一起使用。 --progress表示显示进度。符号-r表示返回,即包含子目录。 --remove-source-files 标志表示发送者的文件将在传输完成后被删除。标志--size-only表示仅合并调整大小的文件,无论文件修改时间如何差异。 --suffix参数指定备份文件名时要添加到文件名的后缀。默认为~。参数-u、--update表示同步时将跳过目标目录中修改时间更新的文件,即不会合并参数更新的文件。符号-v表示输出细节。 -vv表示发布更详细的信息,-vvv表示发布最详细的信息。 --version返回rsync版本。参数-z指定同步期间的数据压缩。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网