如何仅同步指定目录使用rsync命令?

使用 rsync 命令时,可以通过指定源目录和目标目录来同步特定目录。,,“bash,rsync av /source/directory/ /destination/directory/,`,,a 表示归档模式(递归同步并保持文件属性),v` 表示详细输出。

rsync只同步指定目录的方法(已测)

如何仅同步指定目录使用rsync命令?

rsync 是一个非常强大的文件和目录同步工具,在 Linux 和类 Unix 系统中广泛使用,它不仅可以进行本地文件同步,还可以通过网络进行远程数据同步,有时我们可能只需要同步特定的目录,而不是整个文件系统,这时,我们可以使用includeexclude 参数来实现这个目的。

基本用法

假设我们有如下的文件目录结构:

/usr/local/apache/htdocs/site
├── aa
├── bb
├── cc
├── dd
├── ee
...
└── zz

我们只想同步aabbee 这三个目录,而其他目录则不需要同步,可以使用以下命令实现:

rsync azv include "aa/" include "bb/" include "ee" exclude "/*" progress rsync://127.0.0.1/site /work/backup/htdocs_bak/site

a : 归档模式,表示以递归方式传输,并保留所有文件属性。

z : 在传输过程中进行压缩。

v : 详细输出模式。

include "aa/" include "bb/" include "ee" : 包含要同步的目录。

exclude "/*" : 排除其他所有目录。

progress : 显示进度信息。

rsync://127.0.0.1/site : 这是服务端的同步目录。

/work/backup/htdocs_bak/site : 这是客户端的目标目录。

使用includefrom 参数

如果需要同步的目录很多,一个个写会很繁琐,在这种情况下,我们可以将需要同步的目录写入一个文件,然后使用includefrom 参数读取该文件,先创建一个文件/etc/include如下:

aa/
bb/
ee/

然后使用以下命令:

rsync sizeonly azvP includefrom="/etc/include" exclude=/* passwordfile=/opt/mima whsir@192.168.0.10::www /home/wwwroot

这样,rsync 会从/etc/include 文件中读取需要同步的目录列表,从而实现更灵活的目录选择。

表格归纳

参数 说明
a 归档模式,递归传输并保留文件属性。
z 在传输过程中进行压缩。
v 详细输出模式。
include 指定要同步的目录或文件(必须与exclude 配合使用)。
exclude 排除不需要同步的目录或文件。
progress 显示进度信息。
includefrom 从文件中读取要同步的目录或文件列表。
excludefrom 从文件中读取要排除的目录或文件列表。

FAQs

**Q: 为什么exclude "/*" 必须放在最后?

A:exclude "/*" 用于排除除了明确指定的目录之外的所有内容,如果将它放在前面,会首先排除所有内容,导致后面的include 参数无法生效,它必须放在最后以确保其他目录能被正确包括。

Q: 如果我只想同步特定类型的文件怎么办?

A: 你可以使用通配符来实现这一需求,如果你只想同步所有.py 文件,可以这样写:

“`bash

rsync azv include "*/" include="*.py" exclude "/*" progress rsync://127.0.0.1/site /work/backup/htdocs_bak/site

“`

这样,rsync 会只同步.py 文件到目标目录中。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1099841.html

(0)
未希的头像未希新媒体运营
上一篇 2024-09-29 04:08
下一篇 2024-09-29 04:09

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入