windows: скопировать с жесткими ссылками для резервного копирования

на случай, если я случайно изменю/удалю важные документы, мой 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

person Volker Weißmann    schedule 31.03.2018    source источник
comment
есть версии rsync для Windows   -  person Marcin Orlowski    schedule 31.03.2018
comment
cwrsync или deltacopy работает очень хорошо   -  person DIDIx13    schedule 31.03.2018
comment
Возможный дубликат Как создать жесткую ссылку на файл в PowerShell в Windows 10?   -  person Tripp Kinetics    schedule 31.03.2018


Ответы (1)


Текущая версия rsync (3.2.2) из ​​коллекции MSYS2 для Windows (установка: pacman -S rsync), корректно поддерживает параметр повторного использования жесткой ссылки --link-dest в NTFS. Теперь он также поддерживает имена файлов Unicode NTFS. Абсолютные пути должны быть указаны в соглашении MSYS/Cygwin - например. /C/path/to/source/.

Примечание. На данный момент (2021-02) rsync MSYS2 не может создавать/реплицировать символические ссылки в месте назначения с использованием любых параметров символических ссылок. Вместо этого он будет создавать копии контента. Тем не менее, он может обнаруживать и исключать символические ссылки в источнике.

person kxr    schedule 03.09.2020