Articles of rsync

Linux / Cygwinrecursion复制文件更改扩展

我正在寻找一种方式来recursion地find扩展名为X( .js)的文件,并在扩展名为Y( .ts) 的同一目录中创build该文件的副本 。 例如/foo/bar/foobar.js – > /foo/bar/foobar.js和/foo/bar/foobar.ts /foo/bar.js – > /foo/bar.js和/foo/bar.ts等等 我的尽职调查:我正在考虑使用find&xargs&cp和括号扩展( cp foobar.{js,ts} ),但xargs使用大括号来表示从xargs传递的文件列表。 这让我感到难过,因为我刚刚发现了这个真棒酱,是扩大/替代。 我觉得必须有一个单线解决scheme,但我正在努力想出一个。 我发现了执行这个任务的想法:将所需的内容复制到一个新的目录,然后将这个目录与新的目录合并; recursion地在每个目录中运行一个重命名脚本; 使用rsync复制; 使用find,xargs和cpio。 现在看来,像这样运行一个重命名脚本脚本是我最终要做的。

复制一个没有内容的文件名称的目录结构

我有一个巨大的电影文件的目录结构。 对于这种结构的分析,我想复制整个目录结构,即文件夹和文件,但是我不想复制所有的电影文件,而我想保留文件名。 理想情况下,我得到原始电影文件名的零字节文件。 我试图然后rsync到我的远程机器没有获取链接文件。 任何想法如何做到没有写脚本?

git post-receive checkout远程机器?

如果将以下脚本作为hooks/post-receive挂钩添加到裸仓库foo.git : #!/bin/sh GIT_WORK_TREE=/bar git checkout -f 那么无论何时有人推送到存储库,当前状态将在目录bar更新。 这需要bar和foo.git在同一台机器上。 什么是最简单的方法来修改它,以便在远程机器(如baz:/bar )上签出? 一种方法是: #!/bin/sh GIT_WORK_TREE=/tmp/bar git checkout -f rsync … /tmp/bar baz:/bar 有没有更好的办法? 也许不需要中间临时目录? (如果没有什么正确的选项传递给rsync,使得生成的目录是直接签出的?

Rsync如何包含目录但不是文件?

我有一个目录结构和这样的文件 data/ data/a.txt data/folder/ data/folder/b.txt data/folder/folder/ data/folder/folder/c.txt … a.txt , b.txt和c.txt是计算机生成并经常更新的大文件。 他们不应该备份 – 但我想要备份的目录结构: data/ data/folder/ data/folder/folder/ 我怎样才能做到这一点与rsync和–exclude-from,没有指定每个文件夹,但像rsync -a data/* –exclude-from=exclude.rsync "" –onlyfoldersandnotfiles"" ? 感谢帮助 !

通过SSH的rsync保留所有权只有www数据拥有的文件

我正在使用rsync将Web文件夹结构从本地服务器复制到远程服务器。 这两个服务器是Ubuntu的Linux。 我使用下面的命令,它运作良好: rsync -az /var/www/ user@10.1.1.1:/var/www/ 本地系统和远程系统的用户名是不同的。 从我看过的文件可能无法保存所有文件和文件夹的所有者和组。 这是好的,但我想保留所有者和组,只为两个服务器上存在的www-data用户。 这可能吗? 如果是的话,我会怎么做呢? 谢谢! **编辑** 有一些提到rsync能够保留远程文件同步的所有权和组: http : //lists.samba.org/archive/rsync/2005-August/013203.html **编辑2 ** 我最终得到了预期的效果,这要归功于许多有用的评论和答案。 假设源机器的IP为10.1.1.2,目标机器的IP为10.1.1.1。 我可以在目标机器上使用这一行: sudo rsync -az user@10.1.1.2:/var/www/ /var/www/ 这保留了具有公共用户名的文件的所有权和组,如www-data。 请注意,不使用sudo使用rsync不会保留这些权限。

mv等效rsync命令

我试图将文件夹移动到另一个文件夹使用命令行 ,覆盖,如果已经存在,但我得到错误“是一个目录”,当使用mv .. 例: mv src/test/ dest/ 在src / test /上有很多文件和文件夹,还有一些文件和一些文件夹在dest / 和我想要的文件和文件夹上的目标/ 取代文件和文件夹从SRC /testing/ 如果存在 ,例如: src/test/bla/boo replaces dest/bla/boo src/test/bla/bla/boo replaces dest/bla/bla/boo 另外, 每次一个文件传输完成,一个文件从src / test / 和整体转移进度栏会好.. 我应该使用什么rsync标志来使这种情况?

如何通过保持目录结构完整的rsyncpath匹配模式的文件?

我想将所有文件从服务器A复制到服务器B,它们在文件系统层次结构的不同级别具有相同的父目录名称,例如: /var/lib/data/sub1/sub2/commonname/filetobecopied.foo /var/lib/data/sub1/sub3/commonname/filetobecopied.foo /var/lib/data/sub2/sub4/commonname/anotherfiletobecopied.foo /var/lib/data/sub3/sub4/differentname/fileNOTtobecopied.foo 我想复制前三个文件的path中的所有commonname到服务器B.我已经花了很多时间find正确的包括/排除模式的rsync但我没有得到它。 以下命令不起作用: rsync -a –include='**/commonname/*.foo' –exclude='*' root@1.2.3.4:/var/lib/data /var/lib/data 我要么太多或太less的文件。 我怎样才能只同步文件path中的commonname ?

使用Rsync包含和排除选项以包含模式的目录和文件

我有问题得到我的rsync语法的权利,我想知道如果我的scheme实际上可以用rsync处理。 首先,我已经确认rsync在我的本地主机和远程主机之间正常工作。 在目录上进行直接同步是成功的。 这是我的文件系统的样子: uploads/ 1260000000/ file_11_00.jpg file_11_01.jpg file_12_00.jpg 1270000000/ file_11_00.jpg file_11_01.jpg file_12_00.jpg 1280000000/ file_11_00.jpg file_11_01.jpg file_12_00.jpg 我想要做的只是在子目录中以“file_11_”开头的文件运行rsync,我希望能够运行一个rsync作业来同步子目录中的所有这些文件。 这是我正在尝试的命令: rsync -nrv –include="**/file_11*.jpg" –exclude="*" /Storage/uploads/ /website/uploads/ 这会导致0个文件在我的空运行中被标记为传输。 我试过了各种其他的–include和–exclude语句的组合,但是仍然没有得到任何结果,或者得到了一切,就好像没有包含或排除选项一样。 任何人有任何想法如何做到这一点?

在rsync / subshel​​l exec语句中,Bash不会捕获中断

语境: 我有一个bash脚本,它包含一个子shell和一个用于EXIT pseudosignal的陷阱,并且它在rsync期间没有正确地捕获中断。 这是一个例子: #!/bin/bash logfile=/path/to/file; directory1=/path/to/dir directory2=/path/to/dir cleanup () { echo "Cleaning up!" #do stuff trap – EXIT } trap '{ (cleanup;) | 2>&1 tee -a $logfile }' EXIT ( #main script logic, including the following lines: (exec sleep 10;); (exec rsync –progress -av –delete $directory1 /var/tmp/$directory2;); ) | 2>&1 tee -a $logfile trap […]

Rsync到Amazon Ec2实例

我有一个EC2实例正在运行,我可以通过SSH进入。 但是,当我尝试rsync,它给了我的错误权限被拒绝(公钥)。 我正在使用的命令是: rsync -avL –progress -e ssh -i ~/mykeypair.pem ~/Sites/my_site/* root@ec2-XX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com:/var/www/html/ 我也试过了 rsync -avz ~/Sites/mysite/* -e "ssh -i ~/.ssh/id_rsa.pub" root@ec2-XX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com:/var/www/html/ 谢谢,