2015-12-04 75 views
1

我有一個Unix服務器上的目錄,我需要壓縮(遞歸,包括所有文件和目錄)到一個存檔文件,我可以FTP到我的Windows盒子。我需要保持目錄/文件結構。如何將目錄壓縮到AIX上不存在tar z的存檔文件?

所有幫助我能找到的說,使用類似

tar -cvfz myarchive.tar.gz /path/dirtocompress 

,但我沒有「z」的選項可用 - 如果我只是在控制檯輸入tar,它給我的使用細節,但有沒有「z」選項。如果我在沒有「z」的情況下嘗試上述命令,它將在沒有壓縮的情況下運行 - 但文件會被截斷,因爲我的主目錄中沒有足夠的空間來存儲未壓縮的文件(可用空間由I無法控制,而不是沒有足夠的可用磁盤空間)。如果我用「z」運行它,我只是將「tar用法」輸出到控制檯,表明它不理解它。

我也試着將輸出重定向到gzip壓縮:

tar cvf - /path/dirtocompress | gzip > myarchive.tar.gz 

這將壓縮的目錄到一個檔案文件裏面我的主文件夾適合,但不保留路徑結構,所以我最終與檔案的根目錄中的所有文件和目錄。

我沒有選擇在Unix服務器上安裝任何東西,比如不同版本的tar。

如果這是Windows,我只能壓縮目錄,它會創建一個歸檔,遞歸地包含所有文件和文件夾並保留路徑結構。如何使用上述約束在Unix上實現這一點?

+0

'tar cvf' *應該*創建一個包含目錄的tar文件。如果你運行'zcat archive.tar.gz | tar tvf -',輸出是否包含路徑? – patrix

+0

如果我運行命令,得到'tar:意外的文件結束',因爲它在創建時沒有壓縮(因爲主文件夾空間限制)而被截斷。 – user5639117

+0

錯誤,我建議的命令只是列出壓縮的tar文件的內容(如'ls -l')。如果出現此錯誤,tar文件本身可能已損壞。 – patrix

回答

1

正確的命令是

tar cvf - /path/dirtocompress | gzip > myarchive.tar.gz 

這將壓縮目錄到一個gzip文件。正如陽模建議,可以驗證的路徑被正確地保存在這個文件中使用以下命令,該命令列出文件的內容輸出到stdout:

gunzip -c myarchive.tar.gz | tar -tvf - 

的問題是,在Windows解壓縮軟件不解釋/正確解壓檔案; WinZip 11.2忽略了路徑。

使用7-zip for Windows,我能夠解壓縮文件並保留路徑。

+1

避免絕對路徑可能會更好:cd/sourcepath; tar -cvf - path/dirtocompress | gzip>/outputpath/myarchive.tar.gz' –

相關問題