编写脚本来 rsync 所有目录

编写脚本来 rsync 所有目录

我有一大堆备份文件,每个文件都包含一个视频目录。每个视频目录都略有不同。我想将它们合并到一个目录中以进行保存,因为我并不真正关心每个视频来自哪个备份。

为此,我认为 rsync 将是最好的工具,但我很难想出一个干净的脚本来将每个备份的视频目录与外部目的地进行 rsync。

换句话说,我想要一个可以自动执行以下过程的脚本

rsync -a ./Backups/Backup-x/Videos/ ./CollectedVideos/
rsync -a ./Backups/Backup-y/Videos/ ./CollectedVideos/
rsync -a ./Backups/Backup-z/Videos/ ./CollectedVideos/
rsync -a ./Backups/Backup-t/Videos/ ./CollectedVideos/

目录中的所有文件Backups/都是“公平游戏”。

任何建议,将不胜感激。

答案1

如果至少有一个文件夹./Backups包含Video目录,

for dir in ./Backups/*/Videos
do
    if [[ -d $dir ]]
    then
        rsync -a $dir/* ./CollectedVideos/
    fi
done

可能接近您所寻找的。

复制/*文件$dir而不包含其目录非常重要。

答案2

使用通配符不起作用:? 另一种方法是使用 find 和 xargs: 当然,find 是一个运行速度非常慢的命令rsync -a backup//Videos/ /find backups/Backup-*/ -type f -name ""| xargs -I {} -n 1 rsync {} /

相关内容