我正在将一堆用户主目录的.tar备份复制到新服务器,并且已经将tarball从旧服务器复制到新服务器。
例如;
[root@example.com /home]# ls /home |grep tar
returns:
user1.tar
user2.tar
user3.tar
[etc]
但是让事情变得有点棘手,tarball是从原始服务器上的根目录创建的,所以默认提取在默认路径中有'home',例如。
[root@example.com /home]# tar -xvf user1.tar
提取到相对于运行命令的位置的新主目录,并将提取的文件放在路径
/home/home/user1
最接近我相信我已经达到了要求(有几个不同的变化);
[root@example.com /]# ls /home |grep tar |tar -xvf -
返回;
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
现在我意识到每个不同的部分都有很多变通方法,但是如果我要像朋友那样长大成为一个超酷的系统管理员,我应该知道这样的超酷技巧。< / p>
谢谢!
答案 0 :(得分:1)
tar
期望stdin上的tar文件,而不是文件名列表。
分别处理每个文件:
ls *.tar | xargs -n 1 tar xvf
或
for file in *.tar; do tar xvf $file; done