我有这个bash脚本,并通过定期运行cron: #!/bin/bash RSYNC=/usr/bin/rsync SSH=/usr/bin/ssh KEY=/Users/admin/Documents/Backup/rsync-key RUSER=philosophy RHOST=example.com RPATH=data/ LPATH="/Volumes/G Technology G Speed eS/Backup" LOCKFILE=/Users/admin/Documents/backup.isrunning if [ ! -e $LOCKFILE ]; then touch $LOCKFILE $RSYNC -avz –delete –progress -e "$SSH -i $KEY" "$LPATH" $RUSER@$RHOST:$RPATH rm $LOCKFILE else echo "Rsync – Backup still running" fi 备份可能会花费任何时间,从几分钟到几天,如果我通过cron每6小时运行备份,我不想要的是同时运行的两个实例。 所以我所做的就是创build一个简单的locking机制。 但我担心,如果脚本中途死亡的原因是locking文件总是在那里,备份程序不会运行。 有没有办法提高这个更好的傻瓜certificate? 谢谢 斯科特 编辑:最后bash脚本我现在使用感谢下面的答案: #!/bin/bash RSYNC=/usr/bin/rsync SSH=/usr/bin/ssh KEY=/Users/admin/Documents/Backup/rsync-key RUSER=philosophy […]
我已经阅读了几篇文章,如何使用Rsync和公钥authentication自动备份文件。 他们都非常相似。 我刚刚完成一切设置,一切正常,但…我刚刚发现一篇文章,说这是不安全的。 我做了以下几点: 在备份服务器上,我生成了公钥和私钥。 我将公钥复制到远程(原始)服务器目录: /var/sites/.ssh (文件authorized_keys )。 该目录归"user12" 我将以下内容添加到了authorized_keys文件: from="BACKUP.SERVERS.IP.ADDRESS",command="/root/validate_rsync" 我使用以下内容创build了一个文件/ root / validate_rsync: #!/bin/sh echo $SSH_ORIGINAL_COMMAND >> /var/log/synchronize-log.log case "$SSH_ORIGINAL_COMMAND" in *\&*) echo "Rejected" ;; *\;*) echo "Rejected" ;; *\(*) echo "Rejected" ;; *\{*) echo "Rejected" ;; *\<*) echo "Rejected" ;; *\>*) echo "Rejected" ;; *\`*) echo "Rejected" ;; *\|*) echo "Rejected" […]
在我们的研究小组中,我们需要备份在MRI扫描仪上采集的数据,以保留任何获取的扫描(即使由于空间或其他原因可能从扫描仪中删除数据)。 我们称之为我们的保险库 。 要存储到文件库 ,独立的机器nfs-mount扫描器的数据分区,并将数据复制到自己的本地备份硬盘上: rsync -au /nfsmount/data /pvbackup-vault >> $LOGFILE 我的问题是:这安全吗? 我们的数据有时会在经过一次处理之后被重新处理。 所以我想要-u标志。 对于实际的原始数据(这是神圣的),我可以预见到一个问题:由于某些错误/错误/不可预见的情况,扫描仪上的文件被覆盖,然后数据库中的数据将被覆盖。 我不知道如何防范。 一方面,我希望允许重新处理数据,甚至在另一方面重新获得数据,我希望创build一个对未来变化免疫的库 ,至less在数据方面是这样。 我应该举报这些情况并亲自处理吗? 乏味。 注意:我有一个不同的增量策略(rsnapshot)来保护用户的错误,允许恢复无意中删除/更改的数据达到一定数量小时/天/周/月。 注2:也许我应该提及的是,我们目前正在处理约250GB的数据,每周新增约10GB的数据。 所以,DVD是作为替代…
我正在使用rsync(1)保持本地debian库更新。 最近,我用来存储磁盘的磁盘空间开始很小,所以我决定使用符号链接来将一些目录移动到另一个相似大小的磁盘上。 不幸的是,似乎rsync删除符号链接并重新填充几乎完整的磁盘。 经过一番search之后,我发现了rsync的–keep-dirlinks选项,这似乎是为解决我的问题量身定做的。 只有它不。 目标上的符号链接仍然被删除。 这是我的rsync命令: rsync –recursive –keep-dirlinks –links –hard-links –times –verbose \ –delete –delete-excluded $EXCLUDE $SOURCE_EXCLUDE \ $RSYNC_HOST::$RSYNC_DIR/pool/ $TO/pool/ EXCLUDE扩展到消除大量的架构,我不感兴趣,沿着 – 排除–exclude binary-alpha/ –exclude disks-alpha … 。 在rsync启动之前,我的池目录如下所示: lrwxrwxrwx 1 root root 23 2014-09-22 13:58 contrib -> /u2/debian/pool/contrib drwxrwxr-x 62 root root 4096 2012-04-09 03:02 main lrwxrwxrwx 1 root root 24 2014-09-22 […]
假设我有一个包含两个文件的目录,两个文件都是相同的,而且相当大(例如2GB)。我想将该目录rsync同步到远程主机。 据我了解(我可能是错的),rsync计算校验和的文件。 当然,如果它看到2个文件具有相同的校验和,它可以只复制第一个文件,然后在远程主机上做第二个文件的本地副本? 这会使它更快,不是吗? 在类似的说明,在复制之前不rsync散列所有的远程文件? 如果看到与要传输的文件具有相同散列的不同文件,则可以在远程主机上执行本地副本。 rsync支持这种事情吗? 有什么方法可以打开它吗? 有没有一种类似于rsync的工具,将做这种基于散列的本地副本?
目标是rsync(或使用任何其他提供所需结果的工具)只有在date之后创build或修改的文件。 它应该使用包含空格的文件名(和/或其他需要转义的字符)。 我成功地在OS X 10.6.5上使用这个命令: find . -newermt "2010-11-23 16:52:50" -type f -exec rsync -vuptn '{}' ../rsync_test/ ';' find . -newermt "2010-11-23 16:52:50" -type f -exec rsync -vuptn '{}' ../rsync_test/ ';' 我不认为-newermt虽然比OS X更努力工作。 这个命令的问题在于它对每个find的文件运行一次rsync,似乎并不是正确的方法。 我试图改变最后; 与一个+所以它等待整个文件列表,但它刹车(我尝试"+" , \+和其他方式逃脱)。 背景:我正在尝试在远程位置备份我的文件。 这些文件是原始格式和其他格式(照片每天大约30GB)的很多照片,rsync虽然networking将由于上传带宽小(ADSL吸收)而需要不可用的时间。 所以这个想法是在远程位置有很多的磁盘空间,每周一次在小型的外部硬盘上传输新的/修改的文件。 rsync可以很容易地用来在远程位置添加新的/已修改的文件。 为此,我需要在一周内同步外部硬盘驱动器上的新/修改的文件,所以我总是在每个文件的远程位置存放2个以上的文件,以存放超过一周的文件,或在外部硬盘驱动器上存放新的/修改过的文件自上次运输以来。 我打算每隔10分钟(cron)运行一次这个命令,上次运行的date和时间。 你能解决我的命令吗? 或者你有更好的解决scheme?
什么是标志,以确保rsync忽略修改时间和使用校验和只?
当使用SSH将rsync连接到远程服务器时,如何在远程path中转义空格等? 一个简单的反斜杠转义本地bash提示符的空间,但在远程计算机上,空间被读取为path中断,从而标记该path的结束。 所以当我做rsync -avz /path/to/source/some\ dir/ [email protected]:/path/to/dest/some\ dir/会发生什么情况是远程服务器正在读取/path/to/dest/some/ ,因为它不能远程find目的地,因为实际的目的地是“一些目录”而不是“一些”。 如果我尝试使用相同的命令,并且使用反斜杠和空格来避开本地bash提示符并保留远程服务器的反斜杠(总共三个反斜杠: /path/to/dest/some\\\ dir/ ),的确将反斜杠发送到远程服务器,但是远程服务器然后将该path解释为/path/to/dest/some\/而不是/path/to/dest/some\ dir/仍然将空间和字符。 如果我试图用引号包装path,它的行为几乎是一样的,有效地切断了在这个空间的path。 所以它也只能通过本地bash提示符。 最初我使用的path中有一个“ – ”(空格连字符空格)段,远程服务器rsync: on remote machine: -: unknown option返回一个错误rsync: on remote machine: -: unknown option ,这是启动整个空间的原因 – 转义努力摆在首位。 那么我必须做什么才能使远程服务器正常工作,而不必从远程path中删除空格或连字符等其他错误字符?
我正在使用脚本在sudo crontab执行rsync。 该脚本执行双向rsync(从serverA到serverB并反向)。 重启两台服务器之后,rsync在sudo crontab不起作用。 我也设置了一个新的cronjob,它失败了,错误是: rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6] rsync: connection unexpectedly closed (0 bytes received so far) [receiver] 但是,从terminal运行时,rync脚本按预期工作,没有问题。 请帮忙。
我为本地networking做了一些经常使用的仓库的每晚和每周的镜像。 有几次,有人试图做一个更新,而rsync发生和失败,因为预期的文件还没有那里。 是否有可能做一个rsync,使所有更改的文件只有完成时显示正确的名称? 我知道rsync使用临时.hidden文件,而每个传输正在进行,但我可以推迟重命名,直到它完成了某种? 或者,似乎我可以使用–backup选项将所有更改移动到一个目录,然后primefaces地移动它们,但是我希望该function与现在的function相反。 我在Linux上的价值。