我在Windows 7上具有MinGW(也称为“ Git Bash”),并且有一个运行rsync的批处理文件来备份远程Linux计算机上外部驱动器上的文件。这是批处理文件(my_rsync_file.bat
)
REM Changing directory... (assuming we are in G:/My Documents/My Various Things)
cd ../
REM starting rsync...
bash -c "rsync -avzh -P --stats --timeout=60 --exclude Downloads . 'my_remote_linux_computer@128.95.170.200:/media/my_remote_linux_computer/LaCie/My\ Documents'"
以下是逐行说明:
REM Changing directory... (assuming we are in G:/My Documents/My Various Things)
这只是发出一条消息,以提醒我发生了什么事。
cd ../
这会将目录从批处理文件所在的位置上一级更改为“我的文档”。批处理文件位于Windows计算机的外部驱动器中。我想将此外部驱动器上的所有“我的文档”文件夹与远程linux计算机上外部驱动器上的同名文件夹同步。
REM starting rsync...
只是打印另一条消息。
bash -c "rsync -avz -P --stats --timeout=60 --exclude Downloads . my_remote_linux_computer@128.95.155.200:/media/my_remote_linux_computer/LaCie/My\\ Documents"
bash
:启动具有内置rsync库的MinGW
-c
:不确定该怎么做
rsync
:MinGW附带的用于同步文件的库
-avzh
:a-Archive,v-Verbose,z-Compress,h-Human可读,这些是常用选项(更多:http : //linux.die.net/man/1/rsync)
-P
:显示大文件的进度,所以我知道它是否冻结
--stats
:显示最后传输的文件和字节数的摘要
--timeout=60
:之后将其杀死如果卡住了60秒,
--exclude
则从同步中忽略文件/目录,在这种情况下,我排除了一个名为“ Downloads”的目录
.
:指示同步“ My Documents”的所有内容(希望指定的内容在上一行中排除)
my_remote_linux_computer
:name我的远程Linux计算机(不是它的真实名称;)
@128.95.155.200
:来自https://www.whatismyip.com/的远程linux计算机的IP地址(不是我的实际IP地址:)
/media/my_remote_linux_computer/LaCie/My\\ Documents
:到我要接收文件的远程linux计算机上的目录的路径。这是一个外部驱动器。
请注意,“我的文档”中的空格用两个反斜杠转义,并且远程目标的全名和目录用双引号引起来。
当我开始双击bat文件时,系统会提示我输入远程linux计算机的密码。完成后,我得到一些摘要输出,并提示您按任意键关闭。
-c
bash man 的参数说明:如果存在-c选项,则从字符串读取命令。如果字符串后面有参数,则将其分配给位置参数,从$ 0开始。