Linux:从多个目录中复制一个文件

时间:2012-08-27 21:01:29

标签: linux copy tar

我有一种情况,我想从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文件中。

如果有办法可以帮助我吗?

感谢。

SOLUTION:

好的,我发现了这个问题,因为有一些与其他磁盘相关的链接发现效果不佳。解决方案是使用-follow选项与find一起使用符号链接。谢谢。 我使用以下命令

找到。 -follow -type f -name“transaction.log”| tar --create --files-from - > /foo/Stats_transaction_Object.tar.gz

4 个答案:

答案 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