我有两个系统可以在两者之间进行分割处理,并且我试图找到在两者之间移动数据的最有效方法。我已经弄明白了如何在第一台服务器(" 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中的一个答案,我将命令更改为:
服务器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
and,untar / unzip:
tar -zxvf /serverB/current/directory/myData-archive.tar.gz -C /serverB/current/directory/dataHERE
现在,它不仅将数据解压缩/解压缩为:
/serverB/current/directory/dataHERE/
就像我想要的那样,但它也在这里放置了另一个数据副本:
/serverB/current/directory/serverA/directory/a/lot/of/subdirs/myData/
我不想要的。我如何修复命令以便它只将数据放在首位?
答案 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