Shell
通過 ssh 遠端執行不遵循連結?
ssh server ls /var/lib/edumate/backup/weekly/*DBB*
返回一個文件/var/lib/edumate/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120610020013.001
但
ssh server ls /data/backup/weekly/*DBB*
返回掛載的連結目錄中的內容/data/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120513020022.001 /data/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120520020018.001 /data/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120527020019.001 /data/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120603020028.001 /data/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120610020013.001 /data/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120710120854.001
/data
另一個分區在哪裡/dev/sdb2 on /data type ext3 (rw,acl,user_xattr)
和備份是一個符號連結
/data/backup
lrwxrwxrwx 1 root root 12 Jul 10 14:27 backup -> /data/backup/
當然,我是在掛載/連結目錄中的文件列表之後。有什麼方法**可以使用
/var/lib/edumate/backup
而ls
**不是連結的嗎?scp
會表現得一樣嗎?
我最好的猜測是,在您執行的客戶端電腦上,
ssh
您還有一個名為/var/lib/edumate/backup/weekly
. 在你執行它的時候,你的客戶端機器上的那個目錄只包含一個文件。但現在它包含了您期望的所有文件。發生的情況是萬用字元匹配發生在客戶端機器上而不是伺服器上。當時,那裡可能只有一個文件。因此,伺服器將從您的命令收到的內容是:
ls /var/lib/edumate/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120610020013.001
為防止將來發生這種情況,請使用引號執行命令,例如:
ssh server ls "/var/lib/edumate/backup/weekly/*DBB*"
然後萬用字元將被傳遞到伺服器,而不是由客戶端電腦上的 shell 擴展。