简短的版本:如何在truecrypt卷上保留rsync备份?困难的部分是在需要rsync时动态地挂载/卸载该卷。
这是我当前的备份配置(在大多数情况下效果很好):
在Linux框中,备份仅受文件权限保护。我想在这里提高安全性,并将备份放入truecrypt卷中。我可以在外壳中手动熔接该卷。现在的问题是,我如何才能使rsync不仅打开ssh连接并启动rsync守护进程,而且还要在安装truecrypt卷之前(然后在之后卸载)?
我的钱是--rsync-path
可以用来将命令行传递给ssh的选项-只要stdin和stdout仍然可以正常工作。我猜该命令必须是一个shell脚本。这可能吗,脚本会是什么样?
作为参考,以下是该选项的报价:
--rsync-path=PROGRAM
使用此选项指定要在远程计算机上运行什么程序来启动rsync。通常在rsync不在默认远程Shell路径(例如
--rsync-path=/usr/local/bin/rsync
)中时使用。请注意,它PROGRAM
是在Shell的帮助下运行的,因此它可以是您希望运行的任何程序,脚本或命令序列,只要它不会破坏rsync用来进行标准输入和标准输出的操作即可。交流。一个棘手的示例是在远程计算机上设置与该
--relative
选项一起使用的其他默认目录。例如:
rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/
这是完整的rsync手册页。
同时,自几周以来,我已经解决了所有问题并找到了对我有效的解决方案。如果有人有兴趣,我将在此处发布详细信息。特洛伊·约翰逊(Troy Johnson)的这篇文章对整个过程提供了帮助。
/home/deepc/var/backup.tc
我制作了两个Shell脚本来在Linux机器上安装和卸载Truecrypt容器。这些脚本是通过Windows计算机上的ssh远程调用的:
〜/ bin / backup-mount.sh:
#!/bin/bash
# usage: backup-mount.sh <password>
~deepc/bin/backup-umount.sh
echo "$1" | sudo truecrypt -t --slot=2 -k "" --volume-type=normal --protect-hidden=no /home/deepc/var/backup.tc /home/deepc/mnt
〜/ bin / backup-umount.sh:
#!/bin/sh
sudo truecrypt -d /home/deepc/var/backup.tc
remote-backup.cmd:
@echo off
setlocal
set HOME=c:\home
set LC_ALL=de_DE.utf-8
set LC_CTYPE=de_DE.utf-8
set LANG=de_DE.utf-8
rem --iconv=utf-16,iso-88591
ssh -p THESSHPORT -i ../.ssh/id_dsa [email protected] bin/backup-mount.sh THEPASSWORD
rsync -rltvzPm --modify-window=1 --exclude-from=../etc/backup/excludes.txt --chmod=ugo=rwX --delete --delete-excluded --files-from=../etc/backup/files-from.txt -e "ssh -p THESSHPORT -i ../.ssh/id_dsa" --log-file=../tmp/remote-backup.log /cygdrive [email protected]:/home/deepc/mnt
ssh -p THESSHPORT -i ../.ssh/id_dsa [email protected] bin/backup-umount.sh
将此批处理文件放入任务计划程序中,例如使用每日计划。确保调整用户名,远程主机,ssh端口,Truecrypt容器密码,当然还要调整备份路径。抱歉,但是我已经浪费了太多时间,无法继续清理下去...
使用此脚本,Rsync将读取两个文本文件中的包含和排除,例如:
files-from.txt:
/c/Home/
/c/Users/deepc
...
excludes.txt:
Firefox/Cache
Firefox/*.lock
Thunderbird/*.lock
Thunderbird/**/*Junk*
Thunderbird/**/filterlog.html
Thunderbird/**/*.msf
Home/tmp
...
这是回答原始问题的方法。仅有一个小问题:Windows上文件名中的特殊字符在Linux上被破坏,而ext2在Linux上的TC容器中使用。我尝试了所有--iconv
可以想到的参数组合,但无济于事。似乎我必须忍受这一点-除非有些勇敢的灵魂在这里读完为止,知道答案,然后在评论中启发我;-)(容器中的NTFS是不可选项)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句