rsync
命令时,可以通过指定源目录和目标目录来同步特定目录。,,“bash,rsync av /source/directory/ /destination/directory/,
`,,
a 表示归档模式(递归同步并保持文件属性),
v` 表示详细输出。rsync只同步指定目录的方法(已测)
rsync 是一个非常强大的文件和目录同步工具,在 Linux 和类 Unix 系统中广泛使用,它不仅可以进行本地文件同步,还可以通过网络进行远程数据同步,有时我们可能只需要同步特定的目录,而不是整个文件系统,这时,我们可以使用include
和exclude
参数来实现这个目的。
基本用法
假设我们有如下的文件目录结构:
/usr/local/apache/htdocs/site ├── aa ├── bb ├── cc ├── dd ├── ee ... └── zz
我们只想同步aa
、bb
和ee
这三个目录,而其他目录则不需要同步,可以使用以下命令实现:
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
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复