2016-11-13 58 views
1
  • 我的任务:从多个服务器收集日志文件。
  • 服务器文件结构:“/remote/path/dir/sub-dirs/files.log”,其中 在所有服务器上都是相同的。 (所有服务器都相同的一组 “子迪尔斯”,没有可能发生,当然“files.log”名称 不同)
  • 本地文件结构:“/本地/路径/日志”
  • 后复制我想有 “/local/path/logs/dir/sub-dirs/files.log”
  • 方法(在服务器的whlile循环中):scp -r $ SERVERS:/ remote/path/dir/local/path/logs
  • 问题:由于我不明白的原因,第一个scp命令 忽略了“dir”文件夹,我得到了“/local/path/logs/sub-dirs/files.log” 但是遵循scp命令给我什么,我打算 “/local/path/logs/dir/sub-dirs/files.log”
  • 为什么会这样,我应该如何解决/避开它?

谢谢!scp,文件结构保存不一致

回答

0

这究竟是为什么[...]

在命令scp -r path/to/source dest

  • 如果dest不存在,dest将创建目录,并path/to/source/*会复制到它。例如,如果您有path/to/source/X则将创建dest/X
  • 如果dest是一个目录,那么将会创建dest/source,并且将path/to/source/*复制到它。例如,如果您有path/to/source/X则将创建dest/source/X

[...]以及我该如何修复/解决它?

提前创建dest,例如:

mkdir -p /local/path/logs 
scp -r $SERVERS:/remote/path/dir /local/path/logs 
+0

感谢您的帮助了小白,亚诺什。现在问题已解决。 – fanz