我之前有一个问题(已删除),但我仍然不明白为什么很难理解我要问的问题,但我会再试一次,而且会更清楚。
因此,我将多个文件夹从服务器 A 复制到服务器 B,但必须从命令行执行每个复制过程 ('rsync') 的命令,每个文件夹执行一次。
因此,要将文件夹 A 复制到服务器 X,我执行 rsync 命令,完成复制后,我执行新的 rsync 命令将文件夹 B 复制到服务器 X。
我做了一些研究,这可能会帮助您满足我的需求。但是我正在寻找一种方法来一次编写多个命令,如果前一个命令完成了他的操作(从而完成了复制),它会一个接一个地触发。
通常,多个命令在一行中用;
分号或与号分隔&&
。两者之间的区别在于,如果第一个/上一个命令失败并带有分号,它仍然会继续。如果命令产生错误并且您使用了&符号,则它将停止。
因此,我在我的过程中使用了分号,让我的电脑在一夜之间运行......但它只执行了第一个命令,即使我在一行上写了几个用分号分隔的命令。所以它应该一个一个地执行所有这些......所以首先:我如何正确执行多个命令和B,我的命令有什么问题?
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-02-233653/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-09-152837/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-20-201229/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-02-21-130931/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-03-05-113353/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-03-19-162703/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-05-13-215016/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-06-01-231321/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap
Run Code Online (Sandbox Code Playgroud)
出于可读性的目的,我在这里用中断将它们分开。通常是一整行
这通常带有;
分号字符
Seb*_*ian 12
为了可重复性,我建议将这些行放入一个小脚本中,但不要使用关键字sudo
:
#!/bin/bash
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-02-233653/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-09-152837/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-20-201229/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-02-21-130931/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-03-05-113353/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-03-19-162703/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-05-13-215016/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-06-01-231321/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap
Run Code Online (Sandbox Code Playgroud)
要运行这一系列命令,请键入:
chmod +x myscript.sh
sudo ./myscript.sh
Run Code Online (Sandbox Code Playgroud)
这样,sudo
在长命令期间不会超时。脚本文件中不需要分号。默认情况下,每一行都可能失败并执行下一行(要更改这一点,请使用set -o errexit
)。
我还注意到你的命令中有一些可疑的东西。对于--progress
您没有使用常规连字符的选项,而是使用其他一些类似的字符。这可能是您所看到的错误的另一个来源。
请注意 rsync 的用法是rsync [OPTION]... SRC [SRC]... DEST
这意味着这可以更简单地写为
rsync -r -t -h /src1dir /src2 /src3 /destdir
Run Code Online (Sandbox Code Playgroud)
这不受 sudo 会话超时的影响。您没有问,但该选项-a
比-r -t
.
归档时间: |
|
查看次数: |
1240 次 |
最近记录: |