2012-04-05 26 views
0

我正在使用rsnapshot進行備份。到備份的路徑是這樣的:我怎樣才能鎖定一個目錄?

name=$(date +"%Y-%m-%d_%H-%M") 
/backup/hourly.0/"$name" 

在Perl腳本我從不同的快照選擇使diffs的文件在我的主目錄。

my $backup = '/backup'; 

opendir my $dh, $backup or die $!; 
my @versions; 
while (defined(my $version = readdir $dh)) { 
    # ... 
    push @versions, $version; 
} 
# choose from @versions 
# do something with the choosen 

有沒有一種方法來鎖定備份目錄,讓rsnapshot沒有開始,而我跑我的腳本來旋轉快照?

回答

2

您無法使用排他鎖鎖定目錄,因爲排他鎖要求打開文件以進行讀取和寫入,並且無法打開目錄以便讀取&書寫。您可以改爲鎖定文件,但請記住文件鎖定是建議的。因此,如果rsnapshot不鎖定目錄,那麼您將鎖定它,並且沒有其他人注意到您的鎖,並且它沒有完成任何操作。

一些選項:

  • 創建目錄內的鎖定文件,並只在您的腳本將其鎖定。也有調用rsnapshot鎖定它的腳本。
  • 使用一個命名方案,後綴名帶有時間戳,而不是.0,.1等等,這樣你就不需要旋轉它們。
  • 使掃描腳本對掃描時消失的目錄有效。如果目錄消失,請忽略它或重新開始掃描。