
使用 tar 實用程式在備份中儲存檔案時,會遺失擴展 ACL。
是否有一些常用且非駭客的解決方案(例如:建立從頭開始重新建立 ACL 的腳本)來保留 ACL?
答案1
實際上,我認為問題不在於(標準)檔案權限位,而是擴充ACL 資訊(請參閱 setfacl(1) 或 acl(5))。
據我所知,未經修改的 GNU tar 會忽略 ACL 訊息。 (RHEL 5.2 附帶的 GNU tar 1.15.1 的手冊頁提到了開關 --acls 和 --no-acls,但我還沒有讓它們工作。)
但是,那星星程式能夠備份和還原 ACL,如果您選擇埃克蘇斯塔格式:
star -c -p -acl artype=exustar -f archive.tar files...
star -x -acl -f archive.tar
明星首頁:http://cdrecord.berlios.de/new/private/star.html Star 至少在 ubuntu 中可用。
答案2
我也在尋找解決方案,到目前為止我發現了這個:
首先從我的資料夾執行 getfactl
getfacl -R /a_folder > folder.acl
然後做一個常規的 tar
tar -czvf folder.tar.gz /a_folder
當我提取它時
tar -xvf folder.tar.gz
對權限進行 setfacl 操作。
setfacl --restore=folder.acl
這對我有用。
答案3
使用焦油
創造:
tar --acls -cpf backup.tar some-dir-or-file
解壓縮:
tar --acls -xpf backup.tar
答案4
我建議你使用bsdtar
。
bsdtar
預設備份擴充ACL,它使用相同的語法as GNU tar
,並且它產生的檔案可供 讀取GNU tar
。
軟體包和命令名稱(在基於 Debian 的發行版下)是bsdtar
。
bsdtar cf archive.tar /my/folder/using/extd_acl
bsdtar xf archive.tar
第二個(提取)指令恢復 ACL。