我有一个外部硬盘,我使用 rsync 将其备份到另一个外部硬盘。
我最近更改了主硬盘上的大量文件名以匹配新格式。
如果我直接在备份磁盘上进行相同的文件名更改(我将使用脚本执行此操作),rsync 将如何进行?理想情况下,我希望它不要重新复制这些文件,因为可能有超过 TB 的文件已收到新文件名。
我猜测直接在备份磁盘上进行相同的文件名更改是最好的方法,但如果有替代方案,我也想听听它们。
我有一个外部硬盘,我使用 rsync 将其备份到另一个外部硬盘。
我最近更改了主硬盘上的大量文件名以匹配新格式。
如果我直接在备份磁盘上进行相同的文件名更改(我将使用脚本执行此操作),rsync 将如何进行?理想情况下,我希望它不要重新复制这些文件,因为可能有超过 TB 的文件已收到新文件名。
我猜测直接在备份磁盘上进行相同的文件名更改是最好的方法,但如果有替代方案,我也想听听它们。
我想将当前数据从故障驱动器(由于一些有缺陷的扇区导致一些数据丢失)写入具有旧备份的驱动器(数据已被重组和增长)。
将当前数据堆积在顶部以确保不会丢失任何内容会导致重复的混乱,但只是为了看看它是否适合我运行(本地):
rsync -avxHAWXSn --numeric-ids --info=progress2 /source/ /dest/
...
sent 56.348.988 bytes received 3.074.241 bytes 31.267,16 bytes/sec
total size is 3.141.311.295.225 speedup is 52.863,36 (DRY RUN)
现在无法解释输出。
为什么rsyncsent
比它多呢received
?
是total size
源大小还是传输大小?
我们有一个源文件夹,其中包含测试系统的正确基本状态。目前,我们每次都将该源文件夹复制到目标文件夹,并用基本状态覆盖所有内容。当测试在目标文件夹中运行时,它们会修改许多文件,但不是全部。
我们面临的问题是复制命令需要大量时间来复制所有内容,包括基本状态所需的 node_modules 和供应商文件。我想使用 rsync 只覆盖那些从基本状态修改过的文件,以节省测试运行的时间。
这样做的 rsync 语法是什么?
我已经阅读了很多关于使用它仅同步较新文件的信息,但在我们的实例中,目标文件夹将始终比源文件夹更新,因此这不起作用。
尝试将文件从 NTFS 格式的 HDD 复制到 EXT4 格式的 HDD 时,rsync
无法复制其中一些文件名相对较长且由亚洲 (UTF-8) 字符组成的文件。
例如,有一个文件名为:
动态网自由门 天安門 天安门 法輪功 李洪志 Free Tibet 六四天安門事件 The Tiananmen Square protests of 1989 天安門大屠殺 The Tiananmen Square Massacre 反右派鬥爭 The Anti-Rightist Struggle 大躍進政策 The Great Leap Forward 文化大革命.gif
它位于一个不那么短的目录路径中,并且rsync
,即使复制它们-s
并且--iconv=utf8
无法复制它们,例如:
sending incremental file list
rsync: [generator] recv_generator: failed to stat "/path/to/file/\#345\#212\#250\#346\#200\#201\#347\#275\#221\#350\#207\#252\#347\#224\#261\#351\#227\#250 \#345\#244\#251\#345\#256\#211\#351\#226\#200 \#345\#244\#251\#345\#256\#211\#351\#227\#250 \#346\#263\#225\#350\#274\#252\#345\#212\#237 \#346\#235\#216\#346\#264\#252\#345\#277\#227 Free Tibet \#345\#205\#255\#345\#233\#233\#345\#244\#251\#345\#256\#211\#351\#226\#200\#344\#272\#213\#344\#273\#266 The Tiananmen Square protests of 1989 \#345\#244\#251\#345\#256\#211\#351\#226\#200\#345\#244\#247\#345\#261\#240\#346\#256\#272 The Tiananmen Square Massacre \#345\#217\#215\#345\#217\#263\#346\#264\#276\#351\#254\#245\#347\#210\#255 The Anti-Rightist Struggle \#345\#244\#247\#350\#272\#215\#351\#200\#262\#346\#224\#277\#347\#255\#226 The Great Leap Forward \#346\#226\#207\#345\#214\#226\#345\#244\#247\#351\#235\#251\#345\#221\#275.gif": File name too long (36)
有什么解决方法或解决方法吗?
我知道rsync
使用--remove-source-files
(我使用它而不是mv
这样我可以合并目录层次结构)创建新的 inode:
stat 2021_07_30_20_18_17.pdf~
rsync --remove-source-files 2021_07_30_20_18_17.pdf~ 2021_07_30_20_18_17.pdf~.moved
stat 2021_07_30_20_18_17.pdf~.moved
Device: 805h/2053d Inode: 4850411 Links: 1
Device: 805h/2053d Inode: 4849693 Links: 1
由于它正在分配一个新的 inode,这是否意味着它为目标文件分配了新空间?还是--remove-source-files
只是让新的 inode 指向原始文件的内存位置?
我问的原因是因为我的驱动器非常慢,因为目录层次结构很大,大小文件混合在一起),我猜这会使碎片变得更糟。由于大多数 Linux 文件系统不会出现碎片,因此没有像 Windows 上那样简单的碎片整理工具。
我知道我可以 rsync 到一个新驱动器以减少碎片,但是同一个驱动器呢?从内存分配的角度来看,文件移动的工作方式是否相同?
我备份大文件夹,首先我运行rsync ... --dry-run
以验证文件列表。
然后我曾经执行相同的命令,但这次没有--dry-run
传输文件。
因为它要扫描文件两次,所以我想到了一个改进:我将 的输出重定向rsync ... --dry-run
到一个文件,去除所有噪音并只留下文件名,然后将该列表传递给rsync ... --files-from=FILE
.
它工作正常,直到有一个应该删除的文件:
*deleting Downloads/2022-09.pdf
好吧,rsync 抱怨丢失的文件并没有在目的地删除......
rsync: link_stat "/mnt/c/Downloads/2022-09.pdf" failed: No such file or directory (2)
有没有办法在不扫描所有文件两次的情况下重做空运行?
我对 rsync 的工作感到困惑。这是我所做的和期望的。
我创建了两个名为“sbck”和“dbck”的文件夹。
我创建了一个名为的文件a.txt
并使用cp -rp a.txt aa.txt
. 我把这两个文件放在sbck
文件夹中。接下来我做了rsync -rvch sbck/ dbck/
。这将这两个文件都移到了 dbck 中。
问题:既然 a.txt 和 aa.txt 都是一样的,为什么 rsync 允许这个副本?它不应该只是两者之一吗?
我创建了一个名为的文件a.txt
并使用cp -rp a.txt aa.txt
. 我把这两个文件放在sbck
文件夹中。接下来,我做到了cp -rp sbck/a.txt dbck/
。后来,我做到了rsync -rvch sbck/ dbck/
。这将aa.txt
移入 dbck。
问题:由于a.txt 和aa.txt 都是一样的,我已经把a.txt 移到了dbck。为什么 rsync 允许将 aa.txt 复制到 dbck?-c 在这种情况下如何帮助我?
我有一份rsync
工作几年来一直在使用。我是 Windows 用户并使用 Delta Copy Client。
这项工作变得如此混乱,以至于它一直出错,我最近发现它甚至没有复制某些新文件(它可能在错误和重试后被炸毁)。
简而言之,我想从一张白纸开始。
是否有可能?:
我担心的是,如果源文件进行某种镜像操作,我不想意外删除它。
第二个问题——似乎让我伤心的一件事是回收站($RECYCLE.BIN)。这是我可以排除的东西吗--exclude
?
客户端运行的命令是:
rsync.exe -v -rlt -z --chmod=a=rw,Da+x --delete --exclude="CollegeBAK/" --exclude="Microsoft.Cpp/" --exclude="MSOCache/" --exclude="NaturallySpeaking/" --exclude="Documents/Dave/Onedrive/" --exclude="OneDriveTemp/" --exclude="Profile Files/" --exclude="Program Files/" --exclude="Program Files (x86)/" --exclude="ProgramData/" --exclude="Programmer Books" --exclude="Temp/" --exclude="Users/" --exclude="Windows/" --exclude="zz/Docos/" --exclude="node_modules*" --exclude=".vs/" --exclude="bin/Debug/" --exclude="bin/Release/" --exclude="obj/" --exclude="/Sql Server Logs/MALT_1.ldf" --exclude="**/Microsoft.Data.Services.Client.5.6.0/" --exclude="**/NewRelic.Azure.WebSites.x64.3.10.43.0/" --exclude="**/Microsoft.Diagnostics.Instrumentation.Extensions.Intercept.0.13.0-build22724/" --exclude="**/$RDKCLHB.Docs-master/" --exclude="**/My Music/FromJames/" --exclude="**/aspnetcore/fundamentals/host/" --exclude="**/BankWebinars/packages/" --exclude="**/CUMailer/CUWebinars.Azure.AdhocNotifier/" --exclude="**/TTSWebJobs/CUWebinars.Azure.EmailParser/" --exclude="Documents/Dave/dwhelper/Tax/" "/cygdrive/E//" "[email protected]::EBakII/EDrive//"
谢谢
我的src
文件夹是我的本地笔记本电脑。
我有一个dest
用于备份的文件夹(并且已安装 NAS),但由于历史原因,我有时会将该dest
文件夹用于我现在使用的文件夹src
(请耐心等待)。
结果是我有例如
src/docs/2021/january.pdf
尽管
dest/docs/2021/february.pdf
我只是碰巧跑rsync -av src/ dest
了,现在的结果是
src/docs/2021/january.pdf
src/docs/2021/february.pdf
dest/docs/2021/february.pdf
我想要实现的是 2 完全同步,因此两者都有 1 月和 2 月的文件(换句话说,dest
文件也同步到src
)。
我怎么做?