2012-04-06 26 views
1

我試圖備份機器的一些關鍵文件和目錄,包括一些/ home數據,以root身份,手動選擇一些文件以減少tarball的大小。一切都在很大程度上確定,因爲大多數文件由根反正所有,但說我只是試試這個:`tar/home/user/file`是否將/ home所有者更改爲root?

# tar -cf backup.tar /home/user/file 

當我恢復的內容,/ home/user中/文件是否如預期由用戶自備,但/ home/user由root擁有。我試過了,但是,

# tar -cf backup.tar /home 

,並在這種情況下,所有/業主將被保留。 (請注意,我不需要-p標誌,因爲我是root用戶,但我仍嘗試過......)

這是正常行爲嗎?如果是這樣,是否有辦法在保留/房屋所有權信息的同時手動選擇常規用戶文件進行備份?我的目標是簡單地從/解開所有內容。

謝謝!

+0

這與編程無關。這更適合超級用戶或unix stackexchange站點。 – 2012-04-06 11:49:17

回答

2

要正確設置目錄權限,tarball需要包含這些目錄的條目,因此您需要將它們添加到tarball。

當你創建一個只包含/home/user/file,而不是/home/user一個壓縮包,有則沒有關於/home/user在壓縮包的權限信息,所以tar不知道該怎麼辦。它自動創建目錄,但沒有權限,所有者或組給他們,所以他們得到默認值。

您可以添加目錄以及:

# tar -cf backup.tar --no-recursion /home/user /home/user/file 

但是這可能不會讓你的東西任何簡單。請注意0​​- 它告訴tar不要在目錄下添加everthing,只是目錄本身。如果您想實際添加直接樹,則必須使用find(1)手動將該目錄下的每個文件傳遞給它。那會很快變得醜陋。

請記住,我們正在討論備份和恢復特定文件。如果你永遠不會恢復,那麼你可能還會創建unix賬戶來恢復,如果他們不在那裏。所以至少不需要在主目錄上設置權限。那些子目錄也不能這樣說。

+0

謝謝!我認爲這應該工作。請注意:據我所知,在創建用戶帳戶後,我只能使用cp -a/tarred/dir/*/*,這正是破壞目錄所有權的操作。如果我之前嘗試過,它會拒絕useradd -m。 – 2012-04-06 12:08:00

+0

你讓我深入瞭解手冊頁面......它看起來像使用--no-overwrite-dir恢復也可以提供幫助! – 2012-04-06 12:14:53