Ssh
Bash 循環通過 ssh 移動遠端主機上的目錄
我試圖找出一種通過 ssh 在遠端主機上執行以下循環的方法。
基本上,它會重命名一系列目錄以創建旋轉備份。但它是本地的。我希望它適用於遠端主機上的目錄。
while [ $n -gt 0 ]; do { src=$(($n-1)) dst=$n if [ -d /backup/$src ]; then { mv /backup/$src /backup/$dst; } fi; } ((n--)) done;
如果您使用的是 bash,則需要使用
[[
and]]
而不是[
and]
。像您在這裡所做的那樣進行比較變得更加容易。首先,什麼是
$n
起始值?試試這個:
ssh usr@host 'for n in {10..1}; do [[ -d /backup/$(($n-1)) ]] && /bin/mv /backup/$(($n-1)) /backup/${n}; done'
那裡應該這樣做。假設您的起始編號是
10
. 根據 $n 的來源,可以對其進行修改。請注意,mv
指定了完整路徑…這是因為當您在 ssh 中執行遠端會話時,它往往不會執行您的 .bashrc 和 .bash_profile ,這意味著您還沒有設置 ${PATH} 。可能有辦法解決它,但我不知道它是什麼。寫得更易讀:
for n in {10..1} do if [[ -d /backup/$src ]] then /bin/mv /backup/$src /backup/$dst fi fi
由於您是遠端執行它,我認為單行會更容易。