Symlink

將使用者主文件夾存檔到遠端伺服器,而不遵循符號連結?

  • June 23, 2017

我們需要在使用者離開時將使用者的主文件夾進行一次存檔複製到存檔伺服器(等待最終刪除),以防他們後來發現他們可能仍然需要他們的一些文件(儘管我們當然非常強烈地這樣做鼓勵他們在離開前自行備份可能仍需要的一切)。

我們一直在使用scp它,但現在無意中被一位前使用者擷取,該使用者安裝了一些軟體,該軟體在他們的一個文件夾中創建了一個不尋常的符號連結結構,這似乎導致 scp 向上看,然後試圖複製而不是在被阻止之前,超出了預期。

不幸的是,事實證明 scp 似乎總是遵循符號連結,並且似乎沒有任何選項可以防止這種情況發生。

我正在尋找一種替代方法來備份避免此問題的使用者文件夾(理想情況下,它不會比絕對需要的更複雜)。

tar可能是一種可能性,但我有點擔心在將 tarball 複製到存檔伺服器之前在本地創建一個 tarball 可能會佔用大量的儲存空間,並且如果我們的文件伺服器在在未來的某個時間點。

另一種可能性可能是使用rsync,但這對於一次文件傳輸來說似乎是多餘的,而且我從以前的經驗中知道,調整 rsync 自己的選項有時本身可能很繁瑣。

任何人都可以為此建議一個可靠且簡單的 scp 替代方案嗎?

如果您喜歡tar臨時文件,這很容易:不要使用臨時文件。使用管道。

cd /home ; tar cf - user | gzip | ssh archivehost -l archiveuser 'cat > user.archived.tar.gz'

替換xz或任何您喜歡的gzip. 或者將它移到連接的另一端,如果在主伺服器上節省 CPU 週期比節省網路頻寬(以及存檔伺服器上的 CPU)更重要

cd /home ; tar cf - user | ssh archivehost -l archiveuser 'gzip > user.archived.tar.gz'

你也可以gpg在裡面放一個。擁有僅用於這些檔案的密鑰對,在儲存時使用公鑰加密,在需要恢復某些內容時使用私鑰。

根據要求提供更多詳細資訊:

我打算成為您正在歸檔user其主目錄的使用者。是您要儲存檔案的伺服器,並且是檔案伺服器上將擁有檔案的帳戶。/home/user``archivehost``archiveuser

tar cf - user意思是“創建一個 tar 存檔user並將其寫入標準輸出”。這-c是“創建”,並且-f -是“使用標準輸入/標準輸出作為文件”。它可能會使用,tar c user因為-f -它可能是預設設置,但最初的預設操作tar是讀取或寫入磁帶設備。使用顯式-f -可能只是表明我老了。

tarz標誌會很好,但我無法展示如何將其移動到ssh. (此外,使用顯式管道連接gzip和連接tar是那些“老人”的事情之一 -tar並不總是有那個選項。)另外,我可以替換bzip2, lzop,xz -3v或任何其他壓縮程序,而無需記住相應的tar選項。

我以前從未聽說--checkpoint過,因此您只需要依靠自己的測試即可。

引用自:https://unix.stackexchange.com/questions/372770