gpt4 book ai didi

windows:使用硬链接(hard link)进行复制以进行备份

转载 作者:行者123 更新时间:2023-12-03 00:10:34 26 4
gpt4 key购买 nike

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

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

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

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

我正在努力为 Windows 编写类似的脚本:我可以使用 cp -r powershell 命令(或 xcopy cmd 命令),但该命令没有类似于 rsync 的 --link-dest 的选项选项。为 rsync 命令使用 windows 的 linux 子系统是可行的,但 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

最佳答案

当前rsync来自 MSYS2 collection 的版本 (3.2.2)对于 Windows(安装:pacman -S rsync),支持 --link-dest在 NTFS 上正确使用硬链接(hard link)重用选项。它现在还支持 NTFS unicode 文件名。
必须在 MSYS/Cygwin 约定中给出绝对路径 - 例如/C/path/to/source/ .
注意:到目前为止(2021-02),MSYS2 rsync 无法使用任何符号链接(symbolic link)选项在目标中创建/复制符号链接(symbolic link)。它会改为创建内容副本。然而,它可以检测和排除源中的符号链接(symbolic link)。

关于windows:使用硬链接(hard link)进行复制以进行备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49590033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com