Rad*_*dek 2 shell ssh wildcards
ssh server ls /var/lib/edumate/backup/weekly/*DBB* 返回一个文件
/var/lib/edumate/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120610020013.001
Run Code Online (Sandbox Code Playgroud)
但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
Run Code Online (Sandbox Code Playgroud)
在/data另一个分区上的位置
/dev/sdb2 on /data type ext3 (rw,acl,user_xattr)
Run Code Online (Sandbox Code Playgroud)
和备份是一个符号链接 /data/backup
lrwxrwxrwx 1 root root 12 Jul 10 14:27 backup -> /data/backup/
Run Code Online (Sandbox Code Playgroud)
当然,我是在挂载/链接目录中的文件列表之后。有什么方法可以使用/var/lib/edumate/backupinls而不是链接的吗?是scp要表现一样吗?
我最好的猜测是,在您运行 的客户端计算机上,ssh您还有一个名为/var/lib/edumate/backup/weekly. 在您运行它时,您客户端计算机上的该目录仅包含一个文件。但是现在它包含您期望的所有文件。
发生的情况是通配符匹配发生在客户端机器上而不是服务器上。当时,那里可能只有一个文件。因此,服务器将从您的命令中收到的是:
ls /var/lib/edumate/backup/weekly/DBB.0.db2inst1.NODE0000.CATN0000.20120610020013.001
Run Code Online (Sandbox Code Playgroud)
为了防止将来发生这种情况,请运行带引号的命令,例如:
ssh server ls "/var/lib/edumate/backup/weekly/*DBB*"
Run Code Online (Sandbox Code Playgroud)
然后通配符将传递到服务器,而不是由客户端计算机上的 shell 扩展。