我有一种情况,我想从linux下的数千个目录中复制特定文件“transaction.log”,并构建一个包含相同特定文件的tar文件。
实施例: 我在/ user / foo / dirs /
下有数千个目录/user/foo/dirs/dir1
/user/foo/dirs/dir2
/user/foo/dirs/dir3
..
..
..
/user/foo/dirs/dir50000
在每个目录中,有几个文件和一个transaction.log文件。我想从所有50000目录中复制这个transaction.log文件,并将它们存储在tar文件中。
如果有办法可以帮助我吗?
感谢。
好的,我发现了这个问题,因为有一些与其他磁盘相关的链接发现效果不佳。解决方案是使用-follow选项与find一起使用符号链接。谢谢。 我使用以下命令
找到。 -follow -type f -name“transaction.log”| tar --create --files-from - > /foo/Stats_transaction_Object.tar.gz答案 0 :(得分:2)
{}的问题并不错,但它会为每个文件运行一个单独的tar进程。这是一个单一的焦油过程,所以速度要快得多:
find /where/ever -name transaction.log -print | tar --create --files-from - > /somewhere/else/foo.tar
答案 1 :(得分:1)
您可以使用以下命令:
cd /user/foo/dirs/
find . -type f -name "transaction.log" | xargs tar -zcvf transaction_logs_backup.tar.gz
答案 2 :(得分:0)
假设您也想存储目录路径:
find /user/foo/dirs/ -name 'transaction.log' -exec tar rf /tmp/stuff.tar {} \;
这将存储在/tmp/stuff.tar。
中该目录结构中找到的每个transaction.log文件答案 3 :(得分:0)
find / user / foo / dirs -name transaction.log | tar -cv -T- -f /tmp/stuff.tar