使用shell脚本在目标中创建与源中相同的目录结构

tf7tbtn2  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(421)

我登录到一个远程服务器,它的dir结构如下-

cd /exp/gc/data/tmp/
ABCD
GED
TROOP

这些目录可能有子目录,也可能没有子目录。我的要求是将文件从远程服务器复制到hadoop(最终目的地),一次复制一个,保持目录结构与源目录相同。
例如:来源:

cd /exp/gc/data/tmp/ABCD

现在d有3个文件和两个子目录。所以我的目标位置(hadoop)也应该有相同的目录结构,即d必须有3个文件和两个子目录。使用rsync iam可以复制目录结构,但是名称中带有空格或特殊字符的目录不会被复制。代码段:result=$(ssh)username@hostname $result do rsync-arsv中文件的“find/path/-type f”)username@hostname /路径源//target path tmp/hadoop fs-copyfromlocal/target path tmp//hadoop-location/rm-rf/target path tmp/*

cig3rfwq

cig3rfwq1#

我想你要找的是rsync,试一下如下:

rsync -avz foo:src/bar /data/tmp

这将递归地将所有文件从机器foo上的src/bar目录传输到本地机器上的/data/tmp/bar目录。档案在档案中转移权限、所有权等在转移中保留。此外,压缩将用于减小传输的数据部分的大小。
例子

相关问题