有人可以帮我理解这个命令:
tar -czf - -T ./tarFileList.tmp -C ./test_folder/ | ssh -l musthero voserver95.myserver.com -x "umask 002; cd /disk0/test_untar/ ; tar -xzf - "
特别是,我无法理解(tar -czf - ...
)的第一个短划线是什么。如果我指定了我想要tar的文件列表,我为什么需要它(即{{1} }),以及从中获取这些文件的目录(即-T ./tarFileList.tmp
)。
同样复制也有点令人困惑 - 如果没有-C ./test_folder/
命令,如何通过ssh复制tarball?
答案 0 :(得分:8)
第一个破折号是不必要的,您可以同样写:
tar cvf ...
第二个破折号属于f
选项,它表示“不是在文件系统中创建命名文件,而是将已编译的文件写入stdout
”。
然后stdout
通过管道传递到ssh
。远程机器上相应的untar是以stdin
完全相同的方式解开。
因此,在回答您的问题时,在使用stdout
<提取/读取tarfile时,使用tar cf
和stdin
创建/编写tarfile时,短划线表示tar xf
/ p>