两个远程主机之间的tarring和untarring

时间:2017-01-22 01:56:20

标签: tar

我有两个系统可以在两者之间进行分割处理,并且我试图找到在两者之间移动数据的最有效方法。我已经弄明白了如何在第一台服务器(" serverA")上tar和gzip到一个存档,然后使用rsync复制到远程主机(" serverB")。但是,当我解压缩/解压缩数据时,它会保存存档,包括原始服务器的完整路径名。因此,如果在服务器A上我的数据在:

/serverA/directory/a/lot/of/subdirs/myData/*

并使用此命令:

tar -zcvf /serverA/directory/a/lot/of/subdirs/myData-archive.tar.gz /serverA/directory/a/lot/of/subdirs/myData/

... / myData中的所有内容都已成功涂焦并压缩在myData-archive.tar.gz

但是,在复制存档后,当我尝试在第二台主机上解压缩/解压缩时(我手动登录此处完成处理,第一步是解压缩/解压缩)使用此命令:

tar -zxvf /serverB/current/directory/myData-archive.tar.gz

它解开了当前目录(serverB / current / directory /)中的所有内容,但它看起来像这样:

/serverB/current/directory/serverA/directory/a/lot/of/subdirs/myData/Data*ext

我应该如何制定tar命令,以便我的数据最终出现在名为

的目录中
/serverB/current/directory/dataHERE/ 

我知道我需要将-C标志解压缩到另一个目录(在我的情况下,/ serverB / current / directory / dataHERE),但我仍然无法弄清楚如何制作它这样,当存档被解除时,不包括整个路径。我看过类似的帖子,但没有看到我在不同主机之间移动时如何做到这一点。

更新:根据this question中的一个答案,我将命令更改为:

  1. 服务器A上的tar / zip:

    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
    
  2. and,untar / unzip:

    tar -zxvf /serverB/current/directory/myData-archive.tar.gz -C /serverB/current/directory/dataHERE
    
  3. 现在,它不仅将数据解压缩/解压缩为:

    /serverB/current/directory/dataHERE/
    

    就像我想要的那样,但它也在这里放置了另一个数据副本:

    /serverB/current/directory/serverA/directory/a/lot/of/subdirs/myData/
    
    我不想要的。我如何修复命令以便它只将数据放在首位?

2 个答案:

答案 0 :(得分:0)

serverA上执行

( cd /serverA/directory/a/lot/of/subdirs; tar -zcvf myData-archive.tar.gz myData; )

答案 1 :(得分:0)

在经历了一些麻烦之后,我想出了如何实现我想要的目标:

在服务器A上tar:

tar -zcvf /serverA/directory/a/lot/of/subdirs/myData-archive.tar.gz -C /serverA/directory/a/lot/of/subdirs/ myData

然后在serverB上解压:

tar -zxvf /serverB/current/directory/myData-archive.tar.gz -C /serverB/current/directory/dataHERE