2010-08-04 96 views
4

我正在創建一個bash腳本來用rsync備份我的文件。Rsync bash腳本和硬鏈接文件

備份全部來自單個目錄。 我只想要新的或修改的文件進行備份。

目前,我告訴rsync備份目錄,並檢查與上次備份相比較的文件。

我這樣做的方式是

THE_TIME=`date "+%Y-%m-%dT%H:%M:%S"` 
rsync -aP --link-dest=/Backup/Current /usr/home/user/backup /Backup/Backup-$THE_TIME 
rm -f /Backup/Current 
ln -s /Backup/Backup-$THE_TIME /Backup/Current 

我敢肯定我的語法正確,此。每個備份都將檢查「當前」文件夾,並僅作爲必要文件上傳。然後,它將刪除當前文件夾,並重新創建符號鏈接到剛剛完成的最新備份。

rsync: link "/Backup/Backup-2010-08-04-12:21:15/dgs1200series_manual_310.pdf" 

=> /Backup/Current/dgs1200series_manual_310.pdf 失敗:不支持的操作(45)

當我運行該腳本,我得到一個錯誤主機操作系統正在運行HFS文件系統,該系統支持硬鏈接。我試圖弄清楚是否其他東西不支持這個,或者如果我的代碼有問題。

感謝所有幫助

編輯:

我能創造我的本地計算機上的硬鏈接。 我也能夠在遠程服務器上創建一個硬鏈接(當本地登錄時) 我無法在通過afp安裝時在遠程服務器上創建硬鏈接。即使這兩個文件都存在於服務器上。

我猜這是afp的限制。從該名男子頁

回答

1

兩件事情中脫穎而出,是值得檢查:

如果文件的未鏈接,仔細檢查其屬性。另外 檢查某些屬性是否被強制超出rsync的 控件,這種將根壓縮到單個用戶的裝載選項,或者裝載具有通用所有權的可移動驅動器(例如 與OS X的「忽略此捲上的所有權」選項)。

注意,之前2.6.1版本的rsync有指定-o時可能 防止--link-DEST從非超級用戶 正常工作中的錯誤(或者由-a暗示)。您可以在發送到舊的rsync時通過避免-o選項來解決此bug。

您是否打開了「忽略所有權」選項?你有什麼版本的rsync

此外,您是否嘗試過在命令行中使用ln手動創建類似的硬鏈接?

+0

的rsync版本2.6.9協議版本29 我已經成功地創建通過命令行完全一樣的鏈接 我會給其他選項的拍攝在一分鐘內這裏, 萬分感謝。 – 2010-08-04 17:16:01

+0

@大衛:硬鏈接不能從一個文件系統創建到另一個文件系統。 – 2010-08-04 22:01:00

1

我不知道這是否是同一個問題,但我知道當目標是FAT32分區並且文件名中有一個「:」(冒號)時,rsync無法同步文件。 [源文件系統是ext3,目標是FAT32]

嘗試重新配置date命令,以便它不使用冒號並查看是否有所作爲。

例如

THE_TIME=`date "+%Y-%m-%dT%H_%_%S"` 
3

萬一您的命令行僅僅是一個例子:一定要始終與絕對路徑指定鏈路DEST目錄!這是一些東西,我花了相當長的一段時間來找出...

+0

這很奇怪。出於某種原因,將目標指定爲./myfile不起作用,但/ Users/dankle/myfile確實起作用......無論如何,它的工作原理如下+1 :) – Daniel 2011-11-09 20:09:24

+0

@Daniel,它可以用相對路徑工作,它需要相對於* destination *目錄。所以在你的情況下,它可能類似「../myfile」。 – 2013-11-05 06:45:57