【问题标题】:windows: copy with hardlinks for backupwindows:使用硬链接进行复制以进行备份
【发布时间】:2018-03-31 16:33:29
【问题描述】:

如果我不小心修改/删除了重要文件,我的 linux PC 会使用由 cron 执行的脚本进行每日备份,其中包含以下行。

rsync --checksum --recursive ${source} ${dest}/$i --link-dest=${dest}/$((i-1))

(${source}是documents文件夹的路径,${dest}/n是第n次备份的路径。)

使用--link-dest 选项有很大的优势,如果您备份一个 3 GB 文件夹,更改小文件并再次备份,两个备份加起来需要 3 GB 磁盘空间,而不是运行 rsync 而不需要 6 GB --link-dest 选项。

我正在努力为 Windows 编写一个类似的脚本:我可以只使用 cp -r powershell 命令(或 xcopy cmd 命令),但该命令没有类似于 rsync 的 --link-dest 选项的选项。使用适用于 windows 的 linux 子系统执行 rsync 命令是可行的,但 windows 的 linux 子系统内的 cron.daily 文件夹中的脚本每天都会执行。

TLDR:rsync -r pathA pathB --link-dest pathC 的 windows 等效项是什么

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

【问题讨论】:

标签: windows powershell backup rsync backup-strategies


【解决方案1】:

来自MSYS2 collection for Windows(安装:pacman -S rsync)的当前rsync 版本 (3.2.2) 在 NTFS 上正确支持--link-dest 硬链接重用选项。它现在还支持 NTFS unicode 文件名。 必须在 MSYS / Cygwin 约定中给出绝对路径 - 例如/C/path/to/source/.

注意:到目前为止 (2021-02),MSYS2 rsync 无法使用任何符号链接选项在目标中创建/复制符号链接。它会改为创建内容副本。然而,它可以检测并排除源中的符号链接。

【讨论】:

    猜你喜欢
    • 2011-02-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2016-11-05
    • 1970-01-01
    相关资源
    最近更新 更多