在群集上运行多个模拟后,我想将结果复制回本地计算机。结果组织如下:
foo1
|bar1
|run1
|file1.txt
|file2.txt
|results.txt
|run2
|file1.txt
|file2.txt
|results.txt
|bar2
|run1
|file1.txt
|file2.txt
|results.txt
|run2
|file1.txt
|file2.txt
|results.txt
foo2
... (etc.)
每个run*
文件夹包含运行模拟所需的几个文件,但我只想复制结果,比如说results.txt
回到我的本地机器,同时保留树结构的其余部分(目录基本上指定了模拟的参数。
我现在如何才能将results.txt
文件从远程复制到本地,同时保持目录的树结构?这样我本地就结束了
foo1
|bar1
|run1
|results.txt
|run2
|results.txt
|bar2
|run1
|results.txt
|run2
|results.txt
foo2
... (etc.)
答案 0 :(得分:2)
使用find和tar:
find -name result.txt | tar cvfz results.tgz -T -
然后你需要复制tar并解压缩它:
tar xvfz results.tgz
答案 1 :(得分:1)
你可以分两个阶段完成:
find . -type f -name results.txt | xargs tar -f results.tar
这会找到名为results.txt的所有文件(-type f
),然后将结果通过管道传输到tarball中。
第二阶段是scp
从群集返回到本地计算机。