标签: rsync

如何使用 rsync 复制目录树,创建文件的硬链接?

有时,我必须对服务器上的数据文件执行几次大型迁移更改,我正在寻找一种好方法来执行此操作。我正在考虑使用 rsync 从根数据文件夹开始复制我的目录结构,创建指向所有原始文件的硬链接(其中一些文件相当大),并且我可以在目标树中仅覆盖需要迁移的文件。最后,我可以通过两次mv操作安全地从旧文件切换到新文件。

但是,我似乎无法让 rsync 做到这一点。我试过

rsync -a --link-dest=$DATA $DATA $DATA/../upgrade_tmp
Run Code Online (Sandbox Code Playgroud)

但 rsync 不是创建文件的硬链接,而是完全复制它们。使用相同的源和链接目标目录是否有问题?

rsync hardlink mac-osx

28
推荐指数
4
解决办法
2万
查看次数

将 msysgit 中的 rsync 用于二进制文件

我有三个 windows box,它们以各种方式连接到我网络上的 linux box(一个是网络本地的,一个是笔记本电脑,可能是也可能不是本地的,另一个是我的工作台式机)。我目前正在使用 git 在盒子之间同步我的大部分东西(使用 Linux 盒子作为服务器)并且它像冠军一样工作。

但是,现在我还想添加我的 MP3 收藏(12 场),以便在盒子之间有效地同步。我最初认为我可以为此使用 git,但看起来 rsync 是更好的选择,因为我并不真正需要所有历史资料。由于我现有的所有管理脚本都在 git bash(而不是 cygwin)下运行,我希望能够从 git bash 使用它(MINGW32 是窗口标题栏中的内容)。我可以在 Cygwin 中下载它并复制它,还是有更好的方法来处理它?Linux 机器正在运行最新版本的 Ubuntu Server 版本 - 我是否需要对其进行任何操作才能使 rsync 正常工作?

我意识到我这样做的方式可能比需要的要困难一些,但我也将其用作提高我的命令行技能的练习。有什么建议?


我可以从 cygwin shell 使用 rsync,但不能从 msysgit 使用。我尝试将 rsync.exe 从 cygwin 的 bin 文件夹复制到 msysgit 的 bin 文件夹,但它仍然没有找到它。我还需要执行其他步骤才能在那里安装它吗?奇怪的是,我收到了一个找不到文件的错误,而不是给我一个文件的依赖项之一丢失的错误。

windows ubuntu cygwin rsync git

28
推荐指数
3
解决办法
2万
查看次数

在 rsync 或 afpd 中将 UTF-8 NFD 文件名转换为 UTF-8 NFC

我有一个运行 FreeNAS 8 的家庭文件服务器。几天前,我使用 rsync 从 Mac 上传我的整个 iTunes 库,以便我可以通过网络加载我的库,而不是从慢速 USB 驱动器上加载。这基本上有效,现在 iTunes 运行得更好,但我在访问任何包含非 ascii 字符的歌曲时遇到问题(我在加载 Queensrÿche 曲目时第一次注意到这个问题)。这些文件会显示在 Finder 中,但任何访问它们的尝试都会使它们消失,直到我重新连接到服务器。

经过一番研究,我发现这是因为 OSX 使用与 Linux 不同的 UTF 字符顺序。OSX 文件系统使用 Unicode Normalization Form D (NFD),而 linux 使用 Form C (NFC)。Rsync 在执行从我的 mac 到服务器的复制时不会转换这些形式,现在当 iTunes 尝试通过网络访问具有特殊字符的文件时,服务器上的文件的编码错误并且 afpd 报告它们没有存在。

解决这个问题的最佳方法是什么?是否可以在将基本库上传到服务器时让 rsync 执行 unicode 转换?我可以将 afpd 配置为以 NFD 格式传输/接收文件名吗?有没有简单的解决方案来更改服务器上的文件名?我发现了一些关于名为 convmv 的程序的内容,但我不知道是否可以在 FreeNAS 上运行它。

afp rsync mac-osx utf-8 freenas

27
推荐指数
3
解决办法
2万
查看次数

与远程服务器有效同步 100 万个文件的选项?

在我工作的一家公司,我们有一种叫做“播放列表”的东西,它是每个约 100-300 字节的小文件。他们大约有一百万。其中每小时大约有 100,000 次更换。这些播放列表需要每小时上传到不同大陆的 10 个其他远程服务器,理想情况下需要在 2 分钟内快速上传。在 master 上删除的文件也会在所有副本上删除,这一点非常重要。我们目前使用 Linux 作为我们的基础设施。

我正在考虑尝试使用 -W 选项进行 rsync 复制整个文件而不比较内容。我还没有尝试过,但也许对 rsync 有更多经验的人可以告诉我这是否是一个可行的选择?

还有哪些值得考虑的选择?

更新:我选择了 lsyncd 选项作为答案,但这只是因为它是最受欢迎的。其他建议的替代方案也以它们自己的方式有效。

optimization synchronization rsync

27
推荐指数
4
解决办法
1万
查看次数

如何在机器之间同步巨大的稀疏文件(VM 磁盘映像)?

是否有一个命令,例如 rsync,可以将巨大的、稀疏的文件从一个 linux 服务器同步到另一个?

目标文件保持稀疏非常重要。它可能比包含它的驱动器更长(但不会更大)。只应通过线路发送更改的块。

我试过 rsync,但没有任何乐趣。https://groups.google.com/forum/#!topic/mailing.unix.rsync/lPOScZgFE9M

如果我编写一个程序来做到这一点,我只是在重新发明轮子吗? http://www.finalcog.com/synchronise-block-devices

谢谢,

克里斯。

linux rsync kvm-virtualization

26
推荐指数
4
解决办法
4万
查看次数

rsync 不会删除目标文件

我正在尝试将随时间变化的目录镜像到另一个目录。我的问题是 rsync 不会删除目标上的文件,如果它们不再存在于源目录中。这是一个演示脚本:

#!/bin/sh

set -x

DIR1=/tmp/1
DIR2=/tmp/2

rm -rf $DIR1
rm -rf $DIR2

mkdir $DIR1
mkdir $DIR2

echo "foo" > $DIR1/a
echo "bar" > $DIR1/b

rsync -a $DIR1/* $DIR2

rm -f $DIR1/a

rsync -a --delete $DIR1/* $DIR2

ls -1 $DIR2
Run Code Online (Sandbox Code Playgroud)

这是输出:

+ DIR1=/tmp/1
+ DIR2=/tmp/2
+ rm -rf /tmp/1
+ rm -rf /tmp/2
+ mkdir /tmp/1
+ mkdir /tmp/2
+ echo foo
+ echo bar
+ rsync -a /tmp/1/a /tmp/1/b /tmp/2
+ rm -f /tmp/1/a
+ rsync -a --delete …
Run Code Online (Sandbox Code Playgroud)

linux rsync

26
推荐指数
3
解决办法
4万
查看次数

rsync : 只向一个方向传输文件

是否可以使用 rsync 仅向一个方向复制文件?

例如,假设我们有:

left/a.txt

right/a.txt

其中文件最初是相同的。

如果然后修改right/a.txt,则:

rsync -avv left/ right/

将复制right/a.txtleft/a.txt.

是否有可能限制rsync将仅复制left/right/(即防止它从复制right/left/)?

linux synchronization rsync

26
推荐指数
2
解决办法
4万
查看次数

为什么 rsync 会为我生成多个进程?

我正在使用以下 cron 语句从一个文件夹备份到同一台机器上的另一个文件夹:

19 21 * * * root  rsync -ac --delete /source/folder /dest/folder
Run Code Online (Sandbox Code Playgroud)

我使用的时候pstree,看到cron fork了三个进程

 ??cron???cron???rsync???rsync???rsync
Run Code Online (Sandbox Code Playgroud)

ps

 9972 ?        Ds     1:00 rsync -ac --delete /source/folder /dest/folder
 9973 ?        S      0:29 rsync -ac --delete /source/folder /dest/folder
 9974 ?        S      0:09 rsync -ac --delete /source/folder /dest/folder
Run Code Online (Sandbox Code Playgroud)

为什么是三个进程?我可以限制只有一个吗?

linux rsync

26
推荐指数
1
解决办法
1万
查看次数

Rsync 是否允许文件以两种方式同步?

我已经使用 rsync 和 cygwin 备份了 linux web 服务器。我现在在我的 Windows 笔记本电脑上有一个完美的服务器副本。如果我删除或修改笔记本电脑上的文件并再次使用 cygwin 运行 rsync 会删除/更新服务器上的相同文件吗?我的印象是,如果我在服务器上删除/修改并在我的笔记本电脑上运行 rsync 它将删除/修改我笔记本电脑上的本地文件,但这是否反过来工作?

linux backup ssh rsync

26
推荐指数
1
解决办法
2万
查看次数

rsync 需要 -e ssh 吗?

从服务器复制时,我总是使用以下命令:

rsync --progress -avze ssh user@host:/path/to/files ./here
Run Code Online (Sandbox Code Playgroud)

然而,我的一个朋友告诉我,我可以简单地做:

rsync --progress -avz user@host:/path/to/files ./here
Run Code Online (Sandbox Code Playgroud)

所以问题是,如果你不需要-e ssh它为什么会在那里呢?

backup rsync

25
推荐指数
4
解决办法
2万
查看次数