例:
rsync /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln
Run Code Online (Sandbox Code Playgroud)
我的主要问题是远程机器上不存在文件夹/ tmp/fol1.
我可以使用哪些参数强制rsync创建此树?
我正在尝试创建一个自动将文件从一台服务器复制到多台服务器的系统.作为其中的一部分,我使用rsync并安装SSH密钥,它可以正常工作.
我的问题是,当它第一次尝试连接到新服务器时,它会要求确认.有没有办法自动接受?
示例命令/输出:
rsync -v -e ssh * root@someip:/data/
The authenticity of host 'someip (someip)' can't be established.
RSA key fingerprint is somerandomrsakey.
Are you sure you want to continue connecting (yes/no)? yes
Run Code Online (Sandbox Code Playgroud) 我使用rsync备份我的文件.在同步之后,我运行它期望什么也看不到,但它看起来像是在跳过目录.我(显然)改名了,但我相信我仍然掌握了所有可能的信息.这里发生了什么事?
$ ls -l /source/backup/myfiles
drwxr-xr-x 2 me me 4096 2010-10-03 14:00 foo
drwxr-xr-x 2 me me 4096 2011-08-03 23:49 bar
drwxr-xr-x 2 me me 4096 2011-08-18 18:58 baz
$ ls -l /destination/backup/myfiles
drwxr-xr-x 2 me me 4096 2010-10-03 14:00 foo
drwxr-xr-x 2 me me 4096 2011-08-03 23:49 bar
drwxr-xr-x 2 me me 4096 2011-08-18 18:58 baz
$ file /source/backup/myfiles/foo
/source/backup/myfiles/foo/: directory
Run Code Online (Sandbox Code Playgroud)
然后我同步(期待没有变化):
$ rsync -rtvp /source/backup /destination
sending incremental file list
backup/myfiles
skipping non-regular file "backup/myfiles/foo"
skipping non-regular file …Run Code Online (Sandbox Code Playgroud) 我在服务器1上有这样的目录结构:
我希望在服务器2上复制此文件夹结构,但只复制unique_folder1的目录/子目录.即结果必须是:
我知道这rsync对此很好.我试过'包含/排除'选项但没有成功.
我试过了:
rsync -avzn --list-only --include '*/unique_folder1/**' --exclude '*' -e ssh user@server.com:/path/to/old/data/ /path/to/new/data/
Run Code Online (Sandbox Code Playgroud)
但是,结果,我没有看到任何文件/目录:
receiving file list ... done
sent 43 bytes received 21 bytes 42.67 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
Run Code Online (Sandbox Code Playgroud)
怎么了?想法?
附加信息:我有两个服务器的sudo访问权限.我有一个想法 - 使用find命令并cpio一起复制到我需要的内容和使用后的新目录Rsync.但这很慢,有很多文件等.
在过去的几年里,我一直使用rsync one-liner将我的Mac Mini桌面(OSX 10.9,2.5 GHz i5,4 GB RAM)上的重要文件夹备份到FreeNAS盒子(0.7.2 Sabanda修订版5266,Pentium D 2.66 GHz,822MiB RAM [由系统报告,我认为那里有1 GB]).我正在FreeNAS框上运行rsync守护进程.最近,这些转让已无限期挂起.我做了通常的Google-fu,无法确定问题的根源或解决方案.
单线是:
rsync -rvOlt --exclude '.DS_Store' \
--exclude '.com.apple.timemachine.supported' \
--delete /Volumes/Storage/Music/Albums/ 192.168.1.100::albums
Run Code Online (Sandbox Code Playgroud)
我试图让-vvv与--progress,但没有模式,我可以什么之间挂起,什么不能辨别.哎呀,如果我重试,同一个文件可能会在转移过程中挂在不同的位置,或者根本不挂起.干跑(-n)并不总是成功.我唯一的"成功"就是实现一个timeout(--timeout=10)并一遍又一遍地重新运行命令.最终,我一路走来,但不能保证成功,并且步伐不可接受.我已经达到了一个我无法通过的文件.
Mac Mini通过5 GHz连接到我的路由器.FreeNAS盒连接到100 mbit端口上的同一个路由器.实际转移时,rsync --progress报告2.5-4 MB/s.根据--progress,挂起实际上就是这样 - 据我所知,没有数据传输发生.
我需要有关诊断和解决方案的帮助.
我正在尝试使用子进程模块和线程内的Popen启动'rsync'.在我调用rsync之后,我还需要读取输出.我正在使用通信方法来读取输出.我不使用线程时代码运行正常.看来,当我使用一个线程时,它会挂在通信呼叫上.我注意到的另一件事是,当我设置shell = False时,在线程中运行时,我从通信中得不到任何回报.
有一堆关于rsync校验和的线程,但似乎都没有解决这个需求,这将是最有效和最快速的同步方式,至少在我的情况下:
我注意到--checksum,如果有很多文件,该选项可能需要很长时间来镜像文件夹.单独使用此选项将对每个文件运行校验和,这非常安全但非常慢.此外,它会引起读访问开销以计算校验和.
选项--ignore-times不是我想要的,如果时间和大小都匹配,文件不同的可能性是微不足道的,我愿意承担不转移的风险.
该选项--size-only是不完整的,因为具有相同大小但不同时间的文件很可能实际上是不同的文件(例如,在另一个文件中更改char可能不会影响大小,只影响编辑时间).
有没有办法按照上面的组合执行镜像,使用rsync(我在机器人页面中遗漏了什么)或使用任何其他Linux工具?
谢谢.
在文档中,它提到这些文件是包含要包含的模式或要排除的模式的列表的文件.然而,这意味着包含物,除了物质匹配模式之外,一切都被认为是排除.例如,包含以下内容的包含文件:
/opt/**.cfg
Run Code Online (Sandbox Code Playgroud)
应该只包含任何名为*.cfg的文件,该文件存在opt于树中名为any 的目录下的任何位置.所以它会匹配以下内容:
/opt/etc/myfile.cfg
/some/dir/opt/myfile.cfg
/notopt/opt/some/other/dir/myfile.cfg
Run Code Online (Sandbox Code Playgroud)
因此,我希望它隐含地排除其他任何东西.但事实并非如此,因为我在逐项输出中看到了这一点:
*deleting etc/rc.d/init.d/somescript
Run Code Online (Sandbox Code Playgroud)
那么什么是--include-from和--exclude-from?它们只是别名--filter-from吗?
我是unix的新手,需要一些帮助.我在两个不同的服务器上有两个目录.两个目录都包含相同的文件.现在我想检查两个目录中的所有文件是否同步.如果文件不同步,那么我只想显示这些文件的名称.当目录在同一台服务器上时,我能够做到这一点.当目录存在于两个不同的服务器上时,无法弄清楚如何执行此操作.
eg:
server1 /abc/home/sample1/
server2 /abc/home/sample2/
Run Code Online (Sandbox Code Playgroud)
这里我只希望文件名不同步时显示.
提前致谢