标签: rsync

rsync 设置组所有者、组权限

我想使用 rsync 将文件从我的计算机传输到远程 Linux 系统。无论本地文件的组所有权如何,我都想在远程端设置这些值。

如果我在远程 Linux 系统上,我可以创建目录并将所有权和权限设置为:

mkdir my_directory
chown :my_group my_directory
chmod 775 my_directory
Run Code Online (Sandbox Code Playgroud)

如果我在本地创建目录,然后使用 rsync(请记住,我本地没有 my_group),我会这样做:

rsync -ae ssh --chmod=ug+rw,Dug+rwx my_directory remoteserver:dest
Run Code Online (Sandbox Code Playgroud)

这有效,但我无法弄清楚如何通过 rsync 设置组所有者。如果我执行 a chmod g+s dest,则 my_directory 具有正确的组所有者,但其中的所有文件的组所有者都不正确。

rsync permissions

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

如何gzip一个目录,通过scp传输,并在一个命令中解压?

我经常传输大型目录,scp如果我能以某种方式压缩目录、发送它并将其全部解压缩,那将会很美妙。

这样的事情可能吗?

rsync command-line scp gzip

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

类似于 Dropbox 的东西,用于本地使用 NAS 作为存储服务器

我正在寻找在 NAS 和多个本地 mac 之间同步文件夹对的解决方案。每个 mac 都可以编辑文件,然后其他 mac 应该自动同步。基本上是我自己的本地版 Dropbox,不使用“云存储”。

我已经研究过使用 rsync 的解决方案。据我了解, rsync 并不能真正进行双向同步。我也不想一定要调用同步过程。我更喜欢在后台运行的守护进程 - 等待并检查更改,然后“实时”同步它们。

该程序还应该足够灵活,以识别它有时(在笔记本电脑的情况下)无法访问 NAS。然后它应该等待连接再次恢复,而不会打扰我几分钟。

我已经研究过 Synk、folderwatch、rsync、unison 和其他一些,但我还没有真正找到解决方案。它们要么需要被调用,要么它们不是真正双向的。

mac 上不是有微软的“离线文件夹”之类的东西吗?

谢谢

PS:只是为了澄清 - 我不想为了备份目的而同步,而是想同步以便所有 mac 都有最近文件更改的本地副本。

mac nas sync dropbox rsync

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

WinSCP(或类似工具)是否有类似 rsync 的模式?

我需要能够将 Windows 7 x64 笔记本电脑上的内容定期同步到我的异地 CentOS 6 网络服务器。

是否有像 rysnc 的 WinSCP 或类似工具/模式?

出于各种原因,Dropbox 不是这里的选项。

backup sync rsync scheduling winscp

11
推荐指数
1
解决办法
5531
查看次数

使用端口转发时如何恢复大型 scp 文件传输?

我有一台机器在几跳之外,我需要设置端口转发才能传输文件。

编辑:需要明确的是,需要多跳才能访问远程机器。在我的机器上,我设置了一个 VPN,我可以在其中访问 10.255.xx - 这是我可以通过 VPN 连接的唯一机器。一旦登录到 .xx,我就可以连接到其他机器 - .yy 就是其中之一。

从我的机器:

ssh -L 4567:localhost:4567 me@10.255.x.x
Run Code Online (Sandbox Code Playgroud)

然后从那台机器:

ssh -L 4567:localhost:22 me@10.255.y.y
Run Code Online (Sandbox Code Playgroud)

那我可以

scp -P 4567 me@localhost:/path/to/large/file.gz .
Run Code Online (Sandbox Code Playgroud)

我让这个运行过夜,才发现转移在某个时候死了。

我已经看到一些建议使用 rsync over ssh 来恢复传输,但我不清楚如何设置。这可能吗?

ssh rsync file-transfer scp ssh-tunnel

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

如何在保留 ACL 的同时使用 rsync 将 Time Machine 卷复制到另一个磁盘?

最近,我不得不将 Mac 的文件系统从保留大小写更改为完全区分大小写。我通过使用 CCC 并将数据复制到另一个磁盘,然后返回到新格式化的主磁盘来做到这一点。

现在,我想在我的旧 Time Machine 磁盘上进行 Time Machine 备份,该磁盘托管在我的基于 FreeBSD 的 NAS 上,通过 AFP 导出。但是,我收到文件系统不匹配的错误,因为 Time Machine 仍然具有不区分大小写的 fs。这一次,我不能使用 CCC,因为它不支持 Time Machine 卷的文件级复制。

自然地,我直接选择了 rsync,但这会引发一个问题——如果我使用以下命令运行它:

/usr/local/bin/rsync --super -aEHAXNvx --fileflags --delete /Volumes/Time\ Machine\ Backups/ /Volumes/NewDisk/
Run Code Online (Sandbox Code Playgroud)

它一碰到Backups.backupdb/<machinename>文件夹就开始抱怨,带有failed to set permissions, operation not permitted. 这里的问题是复制 ACL,这是非常严格的:

 ll -dle /Volumes/Time\ Machine\ Backups/Backups.backupdb/<machinename>/
 drwxr-xr-x@ 19 root  staff  646 Dec 23 09:38 /Volumes/Time Machine Backups/Backups.backupdb/<machinename>/
 0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown
Run Code Online (Sandbox Code Playgroud)

所以,我-A从上面的命令中删除了,rsync 现在很高兴地移动 GB 的数据。

唉,我也想保留 ACL。这有可能吗?OS X 没有 …

rsync acl macos

10
推荐指数
1
解决办法
8544
查看次数

Ubuntu 服务器中的 Unicode 字符

我最近从 Ubuntu Desktop 13.04 迁移到 Ubuntu Server 13.10,现在我的文件系统似乎不支持 unicode 字符。我使用 rsync 来备份/同步文件,它显示了正确的字符,但它想删除不匹配的文件名并创建一个转义版本。

例如:

root@ubuntu-server:~# rsync -avh --progress --delete --dry-run --exclude \$RECYCLE.BIN /media/source/ /media/target/

deleting Tiësto - Ten Seconds Before Sunrise.mp3
Ti\#353sto - Ten Seconds Before Sunrise.mp3
Run Code Online (Sandbox Code Playgroud)

另外,如果我将 unicode 文件复制到文件系统,它会显示为:

drwxr-xr-x 3 root root      4096 Jan 21  2013 DJ Ti?sto/
Run Code Online (Sandbox Code Playgroud)

我尝试通过安装 unicode 库,apt-get install unicode但这似乎没有解决问题。

更新:现在这可能是内核问题。我正在复制 samba/cifs 并尝试通过指定 utf8 字符集,mount -t cifs //192.xxx.xxx.xxx/source/ /media/target/ -o iocharset=utf8但这会产生错误...

mount error(79): Can not access a needed shared library
Refer to …
Run Code Online (Sandbox Code Playgroud)

rsync filesystems unicode ubuntu-server

10
推荐指数
1
解决办法
5941
查看次数

使用一个命令将 Rsync 同步到多个目录?

我想将我的工作目录 rsync 到另外两个目录。一个目的地用于备份,另一个用于测试。我试过这个:

rsync -av --exclude='.git' source dest1,dest2
Run Code Online (Sandbox Code Playgroud)

但是后来我收到错误 -'dest1,dest2'找不到目录。所以它看起来像是一个目录路径。当然,我会使用不同的目标目录运行命令两次,但这加起来,我想总是 rsync 而不需要使用多个命令。

有可能做这样的事情吗?

backup rsync

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

轻柔地杀死 rsync

有没有办法rsync以干净的方式告诉尽可能停止?两种选择:

  • 告诉rsync停止传输当前文件,清理任何临时文件并退出;
  • 或者让rsync结束当前文件的传输然后停止。

这样做Ctrl + C确实会在传输过程中停止并将临时文件留在那里,对吗?

编辑

即使使用--inplace? 最好的做法是什么?我正在使用rsyncwith--inplace并且我必须快点,我怎么能说“可能会以这个文件结束然后退出,或者现在退出,但是清理你正在复制的这个文件,这样你就不会留下损坏的东西(我不关心它是否被删除,我可以稍后再次备份)”或类似的东西。

rsync kill

10
推荐指数
1
解决办法
9773
查看次数

是否有允许“增量上传”的 FTP 或类似 FTP 的客户端 - 即只上传已更改的文件部分?

我经常通过 FTP(用于 Web 开发的 CSS 文件)对相当大的文本文件进行小的更改,因为我的互联网连接非常慢,这是一个非常痛苦的过程。

即使我只更改文件的一个字符,我仍然需要等待相当长的时间,整个文件会重新上传到服务器。

有什么方法可以在我的本地计算机上编辑远程托管的文件,当我保存文件时,只上传文件中发生更改的部分

编辑:我想我目前还不清楚我是如何使用我的 FTP 客户端的。基本上,我使用 WinSCP 通过 SFTP 打开一个远程文件。WinSCP 将它保存到一个 tmp 文件夹,启动 Sublime Text,然后我开始编辑它。当我点击保存时,WinSCP 会自动重新上传文件。我实际上从未将文件永久保存在我的计算机上 - 一切都是通过 WinSCP 的临时文件夹完成的。这就是为什么我正在寻找一种可以以这种“即打即跑”的方式使用的解决方案。


以前的讨论

我之前在 ServerFault发布了这个问题,其中建议使用 git 之类的东西,但是正如我所解释的:

使用 git 或类似的版本控制工具,我每次保存文件时都必须进行提交,对吗?即使这可以自动完成(即,如果我有一个宏在 Sublime Text 保存文件中创建 Ctrl-S 并同时执行 git push),我可能每小时对 CSS 文件进行 50 - 100 次微小的编辑;我肯定会得到一个垃圾邮件提交日志?此外,git 解决方案是不灵活的,因为它依赖于我正在编辑的任何文件作为 git repo 的一部分。

到目前为止,我能想到的唯一解决方案是使用 rsync 进行某种修改过程,但即便如此,它也非常繁琐:

  1. 我将需要的文件下载到我的计算机(通过 FTP/rsync/任何方式)。
  2. 我在(例如)Sublime Text 中打开一个文件并开始进行编辑。
  3. 后台进程正在监视文件夹中的文件修改。当我保存文件时,该过程会立即触发从我的计算机到服务器的 rsync 操作,从而传输文件的更改部分。

但是,我需要手动设置或指定远程文件或目录路径,否则本地 rsync 脚本将不知道在哪里 rsync 文件,因此这种方法仍然非常不灵活。这种方法不会让我立即浏览到一个随机文件,打开它并像 FTP 客户端那样保存它。

使用此方法也没有像上传进度条这样的可见反馈。

linux ftp rsync

10
推荐指数
1
解决办法
1249
查看次数