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在我运行脚本时不会开始旋转快照?

4

1 回答 1

2

您不能使用排他锁锁定目录,因为排他锁要求打开文件进行读写,而无法打开目录进行读写。您可以改为锁定文件,但请记住文件锁定是建议性的。因此,如果rsnapshot没有同时锁定目录,那么您将锁定它并且没有其他人关注您的锁定并且它不会完成任何事情。

一些选项:

  • 在目录中创建一个锁定文件,并在您的脚本中以独占方式锁定它。还有调用rsnapshot锁定它的脚本。
  • 使用以时间戳而不是 , 等为文件名后缀的命名方案,.0这样.1您就不需要旋转它们。
  • 使您的扫描脚本对扫描时消失的目录具有鲁棒性。如果目录消失,请忽略它或重新开始扫描。
于 2012-04-05T16:41:07.197 回答