我正在尝试编写一个bash脚本:
目前,我有:
ssh username@server "for dir in ~/directoryname/*; (... something here!); done"
但是,当我访问SSH服务器时,我认为我不能使用scp。有没有办法在这里循环播放所有内容?
答案 0 :(得分:2)
远程运行scp
才有效。我们假设没有。
你可以分两步完成:
ssh username@server "... some script that just echos the paths ..." > log
for line in $(<log); do scp username@server:$line ./dir/$line; done
或者您可以调查极其强大的rsync
。它有--include
和--exclude
选项,可以让您执行以下操作:
rsync -av username@server:~/somepath/ ./somepath/ [--exclude/--include flags]
答案 1 :(得分:0)
是的,该脚本是传递给ssh的参数,并且在远程计算机上运行,这意味着您无法轻松引用自己的计算机以告诉它将文件复制到何处。
您可以尝试在本地运行的bash脚本来获取您正在搜索的目录结构,并使用scp复制您有兴趣检索的任何内容。
或者,根据所涉及的尺寸,scp覆盖所有directoryname/
,并从那里得到你想要的东西。