我正在登录到具有dir结构的远程服务器,如下所示 -
cd /exp/gc/data/tmp/
ABCD
GED
TROOP
这些目录依次可能有也可能没有子目录。我的要求是一次一个地将文件从远程服务器复制到hadoop(最终目的地),保持目录结构与源相同。
例如: 源:
cd /exp/gc/data/tmp/ABCD
现在ABCD有3个文件和2个子目录。所以我的目标位置(hadoop)也应该有相同的目录结构,即ABCD必须有3个文件和2个子目录。 使用rsync iam能够复制目录结构,但名称中没有空格或特殊字符的目录不会被复制。 代码段: result = $(ssh username @ hostname“find / path / -type f”) 对于$ result中的文件 做 rsync -arsv username @ hostname / path-source / / target-path-tmp / hadoop fs -copyFromLocal / target-path-tmp / / hadoop -location / rm -rf / target-path-tmp / *
答案 0 :(得分:1)
我认为你要找的是rsync,试试如下:
rsync -avz foo:src/bar /data/tmp
这将递归地将计算机foo上目录src / bar中的所有文件传输到本地计算机上的/ data / tmp / bar目录中。文件以存档权限,所有权等传输,并保留在传输中。此外,压缩将用于减少传输的数据部分的大小。