問題:在/home/usr1目錄下,想要打包/home/usr2目錄中的文件file2,應該使用什么樣的tar命令?
解答1:
$ tar -cvf file2.tar /home/usr2/file2
tar: Removing leading '/' from members names
home/usr2/file2
該命令可以將/home/usr2/file2文件打包到當前目錄下的file2.tar中,需要注意的是:使用絕對路徑標識的源文件,在用tar命令壓縮后,文件名連同絕對路徑(這里是home/usr2/,根目錄'/'被自動去掉了)一并被壓縮進來。使用tar命令解壓縮后會出現以下情況:
$ tar -xvf file2.tar
$ ls
…… …… home …… ……
解壓縮后的文件名不是想象中的file2,而是home/usr2/file2。
解答2:
$ tar -cvf file2.tar -C /home/usr2 file2
該命令中的-C dir參數,將tar的工作目錄從當前目錄改為/home/usr2,將file2文件(不帶絕對路徑)壓縮到file2.tar中。注意:-C dir參數的作用在于改變工作目錄,其有效期為該命令中下一次-C dir參數之前。
使用tar的-C dir參數,同樣可以做到在當前目錄/home/usr1下將文件解壓縮到其他目錄,例如:
$ tar -xvf file2.tar -C /home/usr2
而tar不用-C dir參數時是無法做到的:
$ tar -xvf file2.tar /home/usr2
tar: /tmp/file: Not found in archive
tar: Error exit delayed from previous errors