linux以rsync对文件目录进行备份,利用exclude跳过指定类型文件

本文介绍如何利用rsync工具进行文件备份的同时排除指定类型的文件或目录,通过示例展示了排除.log、.csv文件及data目录的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时会有备份某些文件(例如脚本)的需求,但又不想把脚本执行的日志或一些结果文件备份,可以使用rsync中的exclude来解决。

  • 将oldfile文件夹拷贝至oldfile_bak文件夹,但需要过滤掉其中的.log文件
du -ha ./oldfile/ 
4.0K    ./oldfile/a/2222.csv
4.0K    ./oldfile/a/aabb.log
4.0K    ./oldfile/a/4321.sh
4.0K    ./oldfile/a/log/aabb2.log
4.0K    ./oldfile/a/log/1234.sh
12K     ./oldfile/a/log
4.0K    ./oldfile/a/55511.sh
4.0K    ./oldfile/a/data
36K     ./oldfile/a
4.0K    ./oldfile/b/uuss.sh
8.0K    ./oldfile/b
4.0K    ./oldfile/data
52K     ./oldfile/

执行命令:

rsync -av --exclude "*.log" ./oldfile/ ./oldfile_bak

执行结果:

sending incremental file list
./
data
a/
a/2222.csv
a/4321.sh
a/55511.sh
a/data/
a/log/
a/log/1234.sh
b/
b/uuss.sh

sent 568 bytes  received 145 bytes  1426.00 bytes/sec
total size is 43  speedup is 0.06

并没有复制

./oldfile/a/log/aabb2.log
./oldfile/a/log/aabb2.log

  • 将oldfile文件夹拷贝至oldfile_bak文件夹,但需要过滤掉其中的.log、.csv文件、data文件夹及其子文件

建立一个txt文件,将需要过滤掉的文件类型写入
vi exclude.txt
*.log
*.csv
data
执行命令:
rsync -av --exclude-from "exclude.txt" ./oldfile/ ./oldfile_bak  
执行结果:
sending incremental file list
./
a/
a/4321.sh
a/55511.sh
a/log/
a/log/1234.sh
b/
b/uuss.sh

sent 397 bytes  received 103 bytes  1000.00 bytes/sec
total size is 26  speedup is 0.05

.log、.csv以及data目录都没有被复制。




### 使用 Rsync 实现文件同步 #### 安装 Rsync 大多数 Linux 发行版默认已安装 `rsync`。如果没有安装,可以使用包管理器来安装: 对于基于 Debian 的系统: ```bash sudo apt-get install rsync ``` 对于基于 Red Hat 的系统: ```bash sudo yum install rsync ``` #### 基本语法 Rsync 的基本命令结构如下: ```bash rsync [OPTION]... SRC [SRC]... DEST ``` 其中 `[OPTION]` 表示选项,`SRC` 是源路径,而 `DEST` 则为目标路径。 #### 本地文件同步 要实现在同一台机器上的两个不同位置之间的文件同步,可以执行以下命令: ```bash rsync -av /path/to/source/ /path/to/destination/ ``` 这条命令会将 `/path/to/source/` 下的所有文件和子目录复制到 `/path/to/destination/` 中,并保持原有的属性不变[^1]。 #### 远程文件同步 当涉及到跨网络的文件同步时,通常推荐采用 SSH 协议以保障安全性。假设目标服务器 IP 地址为 `example.com` 并且用户名为 `user`,则可通过下面的方式来进行远程同步: ```bash rsync -avz -e ssh /local/path user@example.com:/remote/path ``` 这里 `-z` 参数表示压缩数据流,在传输过程中节省带宽;`-e ssh` 明确指定了使用的 shell 或者远程程序,默认情况下就是 SSH[^2]。 #### 增量备份 首次运行上述任一形式的同步指令后,后续再次执行相同的操作将会自动启用增量模式——即仅传送自上次以来发生变化的数据块而非整个文件。这得益于内置的算法机制(差分编码),使得即使面对大规模数据集也能高效完成更新工作。 #### 排除特定文件目录 有时可能希望忽略某些类型文件不参与同步过程,这时可以用 `--exclude` 参数指定排除规则: ```bash rsync -av --exclude='*.tmp' /source/dir/ /dest/dir/ ``` 此例子中所有 `.tmp` 文件都将被跳过而不予处理。 #### 日志记录与进度显示 为了更好地监控同步进程以及事后审查历史情况,建议开启日志功能并实时查看进展状态: ```bash rsync -av --progress --log-file=/var/log/rsync.log /src/ /dst/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值