我有一个文件,其中包含我想用tar存档的文件列表。
我们称之为mylist.txt
它包含:
/path1/path2/file1.txt
/path1/path2/file3.txt
...
/path1/path2/file10.txt
我想要做的是将此文件存档到tarball中,但不包括/path1/path2/
。
目前通过这样做:
tar -cvf allfiles.tar -T mylist.txt
在取消归档后保留路径。
我试过这个但是也不行:
tar -cvf -C /path1/path2 allfiles.tar -T mylist.txt
它归档/path1/path2
中的所有文件,即使那些不在mylist.txt中的文件
有办法吗?
答案 0 :(得分:36)
在“提取阶段”中,您可以使用strip-components
标记,如
tar xvf tarname.tar --strip-components=n
将删除文件名的前n个前导组件。虽然如果你有不同的文件路径组件,这将不适用于所有情况。
如果你想在存档时这样做,只会想到一件事,我会分享
INPUT:文件列表+完整路径
1)对于每一行,将路径拆分出文件名
2)对该路径执行cd并对该文件名执行tar
3)重复每一行