2013-03-04 116 views
2

我正在使用rsync設置備份。我想使用指向它的符號鏈接指定根源目錄,但對於其他歸檔樹,我想保留符號鏈接。是否可以用rsync進行備份,遵循根符號鏈接,但保留其餘的符號鏈接?

此外,我想保留作爲備份存檔中的根的符號鏈接名稱。

此設置(可能會或可能不會很聰明)的原因是源代碼是版本控制的應用程序,其中版本號會隨着時間的推移而增加。我只想備份最新版本,我希望rsync從備份存檔中刪除較舊的文件。

示例源:

source_symlink -> source-1.2.3 
source-1.2.3/ 
    file1.txt 
    dirA/ 
    fileA.txt 
    symlink_fileA -> dirA/fileA.txt 

如果我試圖備份此與

rsync -av --delete source_symlink destination_dir 

我只是得到我的目的地裏面的符號鏈接的副本;像這樣:

destination_dir/ 
    source_symlink -> source-1.2.3 

即一個指向一個不存在的目錄的符號鏈接。

如果我自己解析符號鏈接,例如像這樣:

rsync -av --delete $(readlink -f source_symlink) destination_dir 

我得到如下:

destination_dir/ 
    source-1.2.3/ 
    file1.txt 
    dirA/ 
     fileA.txt 
    symlink_fileA -> dirA/fileA.txt 

這是確定的,直到我改變符號鏈接,例如下一版本;例如source_symlink -> source-2.0.0。在這種情況下,我結束了在歸檔副本:

destination_dir/ 
    source-1.2.3/ 
    source-2.0.0/ 

我想是根符號鏈接之後,但是符號鏈接的其餘部分將被保留。此外,我想在目標目錄中有符號鏈接名稱。像這樣:

destination_dir/ 
    source/ 
    file1.txt 
    dirA/ 
     fileA.txt 
    symlink_fileA -> dirA/fileA.txt 

這是可能實現的嗎?

回答

1

您可能想要嘗試使-a選項爆炸並省略「l」。

因此,而不是-av你會有-rptgoDv。

從文檔:

-l, --links     copy symlinks as symlinks