我的 Linux 机器上有一个特定的文件夹,我想完全备份它,并且能够“回到过去”查看文件的所有以前的修订版本。
更复杂的是,此文件夹是共享的(使用内置共享工具),并且由 Windows 计算机访问和写入。因此,我希望将备份写入 Windows 计算机无权访问的地方。
我该如何设置?
答案1
我使用以下脚本进行备份:
#! /bin/bash
# Gets date of most recent backup.
newestfile=$(cd /home/<USERNAME>/.Backups && find . -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" ")
budate=`echo $newestfile| cut -c10-19`
# Gets current date
cdate=$(date --iso)
# If the cureent date is the same as the date of the most recent backup, don't run the backup, just give a notification that says it has already been done today.
if [ $cdate = $budate ]; then
echo "Backup Complete"
notify-send -i /home/<USERNAME>/Pictures/Logos/safe.png "Backup Status" "Already started/finished backup for today."
# If the dates are different, start the backup.
else
echo "Starting backup"
notify-send -i /home/<USERNAME>/Pictures/Logos/safe.png "Backup Status" "Starting backup for today."
# Compresses the files into .tar.gz format
tar -cvpzf /home/<USERNAME>/.Backups/backup-$(date +%Y-%m-%d-%H:%M).tar.gz "/home/<USERNAME>/folder/to/back/up" --exclude=.Backups && notify-send --expire-time=60000 -i /home/tim/Pictures/Home/Logos/safe.png 'Backup Status' 'Finished backup for today.'
fi
这将保存一个如下所示的备份文件:
backup-2014-07-26-13:13.tar.gz
在隐藏文件夹中/home/<USERNAME>/.Backups
用于通知的 safe.png 文件可以下载从这里。
将脚本另存
/home/<USERNAME>/Scripts
为backup.sh
运行以下命令:
chmod +x 脚本/backup.sh mkdir .备份 触摸 .Backups/backup-2000-01-01-00:00.tar.gz
然后将命令添加
Scripts/./backup.sh
到登录时启动的应用程序中。即使您一天登录多次,也只会获得 1 个备份。或者
您还可以使用 cron 定期运行脚本。使用以下命令编辑它
crontab -e
并将此行添加到末尾:0 15 * * * bash /path/to/script/backup.sh
我的代词是“他”
答案2
我最终选择的解决方案是“Back In Time”。我将备份间隔设置为 5 分钟,它会将我的特定文件夹备份到另一个位置,并允许我返回它所拍摄的快照。