我的媒体库不大,但也不小(约 50 GB)。每个月左右,我都会手动将~/Music
、~/Pictures
和~/Videos
复制到我的 EHD,然后删除旧备份。但这远非理想。首先,它非常慢(总共约 50 GB)。它也没有版本控制,所以如果我想返回多个版本,我就没那么幸运了。
有没有简单、稳定、渐进的方式来做到这一点?我愿意使用传统的版本控制系统,比如 Git,尽管我以前除了代码之外没有用过它们。命令行很好(特别是如果它是可脚本化的)。我只需要备份这 3 个文件夹——任何不是媒体的东西都存储在我的Dropbox。 有任何想法吗?
编辑:这是我最终使用的脚本(感谢 Mistiry):
#!/bin/sh
rsync --delete --size-only -ravv /home/matthew/Music "/media/My Passport/backup/Music"
rsync --delete --size-only -ravv /home/matthew/Pictures "/media/My Passport/backup/Pictures"
rsync --delete --size-only -ravv /home/matthew/Videos "/media/My Passport/backup/Videos"
我发现--progress
它不是特别有用,因为我的音乐是按专辑组织的,每张专辑只有大约 100mb。如果可以显示整个rsync
操作的进度,那会更有用。
我曾经--delete
这样做过,如果我在本地清理我的库,它也会清理备份。
只是vv
将其置于详细模式,因为我是新手rsync
,我想知道是否出现任何问题。
答案1
使用该程序rsync
,其工作方式类似于增量备份,不会备份未改变的文件。
这里有几个不同的选项(显然,更改目标目录。我在示例中使用了 /mnt/usb):
rsync -ra ~/Music /mnt/usb
这会r递归地A档案同步您的文件,这意味着它将复制所有内容(包括目录),并保留所有权、时间戳等。
rsync -r --size-only ~/Music /mnt/usb
这会r递归地同步您的文件,仅使用文件大小来比较文件(需要更少的 CPU 能力,因此速度更快)。
rsync -raz --progress --size-only ~/Music /mnt/usb
这会r递归地A档案C压缩同步文件(z 表示压缩),仅使用文件大小来比较文件,并在同步之前压缩它们。这需要更多 CPU,因此速度较慢。
(注:-ra
与 相同-a
。此处,-r
只是为了清晰起见才包含的。)
由于这是您定期要做的事情,因此您可以将类似这样的内容添加到您的 crontab(运行crontab -e
以更改您的 crontab):
* 21 1 * * /usr/bin/rsync -r --size-only ~/Music /mnt/usb
* 22 1 * * /usr/bin/rsync -r --size-only ~/Pictures /mnt/usb
* 23 1 * * /usr/bin/rsync -r --size-only ~/Videos /mnt/usb
在上面的例子中,每月 1 日的晚上 9 点,您的~/Music
目录将同步到/mnt/usb
。晚上 10 点~/Pictures
和晚上 11 点,~/Videos
。