我有一个由WDBackup(西部数字外部高清备份工具)创建的备份目录,其中包含备份的每一天的目录以及备份内容的增量内容。
所以层次结构如下所示:
20100101
My Documents
Letter1.doc
My Music
Best Songs Every
First Songs.mp3
My song.mp3 # modified 20100101
20100102
My Documents
Important Docs
Taxes.doc
My Music
My Song.mp3 # modified 20100102
...etc...
仅备份已更改的内容,并且所做的第一个备份包含选择用于备份的所有文件。
我现在要做的是逐步复制,同时保持文件夹结构,从最旧到最新,每个这些日期文件夹都放入“合并”文件夹,以便它覆盖旧内容并保留新内容。
例如,如果仅使用这两个示例文件夹,则最终合并文件夹将如下所示:
Merged
My Documents
Important Docs
Taxes.doc
Letter1.doc
My Music
Best Songs Every
First Songs.mp3
My Song.mp3 # modified 20100102
希望这是有道理的。
谢谢,
约什
答案 0 :(得分:6)
您可以在bash for循环中使用rsync,例如:
$ for d in 2010* ; do rsync -av ./$d/ ./Merged/ ; done
请注意,在真正运行之前,您可能只是要谨慎并测试它实际上会按照您的意愿执行 - 为此您可以使用rsync的-n
标志来执行“干运行” :
$ for d in 2010* ; do rsync -avn ./$d/ ./Merged/ ; done
答案 1 :(得分:1)
如果目录名实际上是YYYYMMDD表单,您可以对它们进行排序。 因此,只需要从较旧的一个开始遍历它们并将所有内容复制到目的地,覆盖以前的内容。相当低效,但有效。
cd $my_disk_full_of_backups
for x in (ls | sort); do cp -Rf $x/* /my_destination/; done
实际上很丑陋,几乎每个有bash的unix系统都应该是相当便携的。
有关详细信息,请参阅bash(1),ls(1)和sort(1)。