![Rsync 使用路径通配符排除 MP4](https://linux22.com/image/1155049/Rsync%20%E4%BD%BF%E7%94%A8%E8%B7%AF%E5%BE%84%E9%80%9A%E9%85%8D%E7%AC%A6%E6%8E%92%E9%99%A4%20MP4.png)
我想从 rsync 备份中排除渲染的视频 (.mp4)。但是我需要在备份中包含一些 .mp4。区别在于要排除的 MP4 所在的路径。我尝试过(但没有成功)的是:
/home/rpiggott/Videos/youTube/*/*.mp4
- 我尝试使用通配符 /*/ 来匹配所有子目录。每个视频都有自己的目录。
- *.mp4 尝试匹配我想要排除的渲染视频。
我将这个添加到此列表。
这是我的 NAS 设备上 rsync 的语法
sshpass -p PASSWORD rsync -av --del --exclude-from=/var/tmp/ignorelist --numeric-ids /home/rpiggott USER@NAS_IP_ADDRESS:/nfs/rpiggott/
答案1
答案是创建一个完整的排除列出你不想包含在同步:
步骤 1:创建一个文本文件,列出要从 rsync 备份中排除的文件名(包括路径)
command \ls /home/rpiggott/Videos/youTube/*/*.mp4 > /var/tmp/youTube_mp4_exclude
- 指某东西的用途命令 \ls忽略终端中使用的 ls 别名
- (1)的使用>每次运行该命令时都会覆盖创建的文件
- 输出路径 - 文件名必须完全匹配同步正在搜索。要消除部分路径,请使用以下命令:
command \ls /home/rpiggott/Videos/youTube//.mp4 | sed 's:/home/::' > /var/tmp/youTube_mp4_exclude
第2步:猫文件放在一起
cat /var/tmp/ignorelist /var/tmp/youTube_mp4_exclude > /var/tmp/rsync_ignore.txt
- 如果这是一个 cron 任务,不要忘记文件权限
步骤 3:改变--排除到新创建的文件:
sshpass -p PASSWORD rsync -av --del --exclude-from=/var/tmp/rsync_ignore.txt --numeric-ids /home/rpiggott [email protected]:/nfs/rpiggott/
- 记住 rsync 有一个--dry-run测试备份的选项
如果你将其设置为 cron,请使用.sh文件权限为 755
0 3 * * * /home/rpiggott/Backup/daily_backup.sh