tarring and untarring between two remote hosts
我有两个系统要在它们之间进行分离处理,我正在尝试找到在这两个系统之间移动数据的最有效方法。我已经了解了如何将tar和gzip放到第一个服务器("servera")上的一个归档文件中,然后使用rsync复制到远程主机("serverb")。但是,当我在那里解开/解压缩数据时,它会保存归档文件,包括原始服务器的完整路径名。因此,如果在服务器A上,我的数据位于:
1 | /serverA/directory/a/lot/of/subdirs/myData/* |
并且,使用以下命令:
1 | tar -zcvf /serverA/directory/a/lot/of/subdirs/myData-archive.tar.gz /serverA/directory/a/lot/of/subdirs/myData/ |
在mydata-archive.tar.gz中,已成功对…/mydata中的所有内容进行tarred和zipped。
但是,复制存档后,当我尝试在第二台主机上解开/解压缩(我手动登录此处完成处理,第一步是解开/解压缩)时,使用以下命令:
1 | tar -zxvf /serverB/current/directory/myData-archive.tar.gz |
它会将当前目录(serverb/current/directory/)中的所有内容都解开,但看起来如下:
1 | /serverB/current/directory/serverA/directory/a/lot/of/subdirs/myData/Data*ext |
我应该如何制定这两个tar命令,以便我的数据最终出现在一个名为
1 | /serverB/current/directory/dataHERE/ |
?
我知道我需要-c标志将其解压缩到另一个目录中(在我的例子中是/serverb/current/directory/datahere),但我仍然不知道如何使其成为一个目录,以便在归档文件未被删除时不包括整个路径。我看到过类似的帖子,但没有一篇讨论过如何在不同的主机之间切换时做到这一点。
更新:根据此问题中的一个答案,我将命令更改为:
服务器a上的tar/zip:
1 | tar -zcvf /serverA/directory/a/lot/of/subdirs/myData-archive.tar.gz serverA/directory/a/lot/of/subdirs/myData/ -C /serverA/directory/a/lot/of/subdirs/ myData |
并且,解开/解开:
1 | tar -zxvf /serverB/current/directory/myData-archive.tar.gz -C /serverB/current/directory/dataHERE |
现在,它不仅可以将数据解压缩到:
1 | /serverB/current/directory/dataHERE/ |
就像我想要的,但它也把数据的另一个副本放在这里:
1 | /serverB/current/directory/serverA/directory/a/lot/of/subdirs/myData/ |
我不想要。我需要如何修复我的命令,使它只把数据放在第一位?
在一些更多的梅辛左右,我想到如何实现,我想: </P >
对焦油的servera: </P >
1 | tar -zcvf /serverA/directory/a/lot/of/subdirs/myData-archive.tar.gz -C /serverA/directory/a/lot/of/subdirs/ myData |
然后到解压是serverb: </P >
1 | tar -zxvf /serverB/current/directory/myData-archive.tar.gz -C /serverB/current/directory/dataHERE |
是
1 | ( cd /serverA/directory/a/lot/of/subdirs; tar -zcvf myData-archive.tar.gz myData; ) |