на случай, если я случайно изменю/удалю важные документы, мой Linux-ПК ежедневно делает резервные копии с помощью сценария, который запускается cron и содержит следующую строку.
rsync --checksum --recursive ${source} ${dest}/$i --link-dest=${dest}/$((i-1))
(${source} — путь к папке с документами, ${dest}/n — путь к n-й резервной копии.)
Использование параметра --link-dest
имеет большое преимущество: если вы создаете резервную копию папки размером 3 ГБ, меняете ее на небольшой файл и снова выполняете резервное копирование, для обеих резервных копий требуется 3 ГБ дискового пространства вместо 6 ГБ, если бы я запускал rsync без параметра --link-dest
.
Я изо всех сил пытаюсь написать аналогичный сценарий для Windows: я мог бы просто использовать команду cp -r
powershell (или команду xcopy cmd), но эта команда не имеет параметра, аналогичного параметру --link-dest
rsync. Использование подсистемы Linux для Windows для команды rsync работает, но сценарии в папке cron.daily внутри подсистемы Linux для Windows выполняются ежедневно.
TLDR: что такое Windows-эквивалент rsync -r pathA pathB --link-dest pathC
PS: Если кому-то нужна версия скрипта для Linux для своих резервных копий, вот она:
#!/bin/bash
source=/home/username/documents
dest=/myBackup
if [ "$1" == "--install" ] ; then
echo "installing..."
cp $0 /etc/cron.daily/myBackupScript
mkdir $dest
echo "installed"
exit 0
fi
for i in {0..9999}; do
if [ ! -e ${dest}/$i ]; then
echo "Copying to " ${dest}/$i
if [ -d ${dest}/$((i-1)) ]; then
rsync --checksum --recursive ${source} ${dest}/$i --link-dest=${dest}/$((i-1))
else
rsync --checksum --recursive ${source} ${dest}/$i
fi
DATE=`date +%Y-%m-%d__%H:%M:%S`
touch ${dest}/$i/$DATE
exit 0
fi
done
echo "unable to do backup"
exit 4