我想复制文件从/到远程服务器在不同的目录。 例如,我想一次运行这4个命令。

scp remote:A/1.txt local:A/1.txt
scp remote:A/2.txt local:A/2.txt
scp remote:B/1.txt local:B/1.txt
scp remote:C/1.txt local:C/1.txt

最简单的方法是什么?


当前回答

注意:我很抱歉只回答了上面问题的一部分。但是,我发现这些命令对我当前的unix需求很有用。

从本地机器上传特定文件到远程机器:

~/桌面/dump_file $ scp file1.txt file2.txt lab1.cpp等人

从本地机器上传整个目录到远程机器:

~$ scp -r Desktop/dump_files your-user-id@remotemachine.edu:Folder1/DestinationFolderForFiles/

从远程机器下载整个目录到本地机器:

~/Desktop$ scp -r your-user-id@remote.host.edu:Public/web/ Desktop/

其他回答

scp remote:"[A-C]/[12].txt" local:
scp -r root@ip-address:/root/dir/ C:\Users\your-name\Downloads\

使用-r可以下载远程服务器的dir目录下的所有文件

{file1,file2,file3}的答案仅适用于bash(在远程或本地)

真正的方法是:

scp user@remote:'/path1/file1 /path2/file2 /path3/file3' /localPath

你可以使用-r开关复制整个目录,所以如果你可以把文件隔离到自己的目录中,你可以一次复制所有的文件。

scp -r ./dir-with-files user@remote-server:upload-path

scp -r user@remote-server:path-to-dir-with-files download-path

例如,

scp -r root@192.168.1.100:/var/log ~/backup-logs

或者如果只有几个,你可以用:

scp 1.txt 2.txt 3.log user@remote-server:upload-path

不使用scp更简单:

tar cf - file1 ... file_n | ssh user@server 'tar xf -'

这还允许您执行一些操作,例如压缩流(-C)或(自OpenSSH v7.3以来)-J,以便随时在一个(或多个)代理服务器之间跳转。

通过将公钥对应到~/来避免使用密码。Ssh /authorized_keys(在服务器端)与Ssh -copy-id(在客户端)。

也张贴在这里(有更多细节)和这里。