透過 ssh 遠端執行不追蹤連結?

透過 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表現得一樣嗎?

答案1

我最好的猜測是,在您運行的客戶端電腦上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 擴展。

相關內容