我想复制文件从/到远程服务器在不同的目录。 例如,我想一次运行这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
最简单的方法是什么?
我想复制文件从/到远程服务器在不同的目录。 例如,我想一次运行这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
最简单的方法是什么?
当前回答
在我的案例中,有太多名称不相关的文件。
我最后用了,
$ for i in $(ssh remote 'ls ~/dir'); do scp remote:~/dir/$i ./$i; done
1.txt 100% 322KB 1.2MB/s 00:00
2.txt 100% 33KB 460.7KB/s 00:00
3.txt 100% 61KB 572.1KB/s 00:00
$
其他回答
最简单的方法是
local$ scp remote:{A/1,A/2,B/3,C/4}.txt ./
所以{. .}列表可以包含目录(A,B和C这里是目录;“1.txt”和“2.txt”是这些目录下的文件名)。
虽然它会将所有这四个文件复制到一个本地目录-不确定这是否是你想要的。
在上面的例子中,你会将远程文件A/1.txt, A/2.txt, B/3.txt和C/4.txt复制到一个本地目录,文件名分别为./1.txt, ./2.txt, ./3.txt和./4.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更简单:
tar cf - file1 ... file_n | ssh user@server 'tar xf -'
这还允许您执行一些操作,例如压缩流(-C)或(自OpenSSH v7.3以来)-J,以便随时在一个(或多个)代理服务器之间跳转。
通过将公钥对应到~/来避免使用密码。Ssh /authorized_keys(在服务器端)与Ssh -copy-id(在客户端)。
也张贴在这里(有更多细节)和这里。
scp -r root@ip-address:/root/dir/ C:\Users\your-name\Downloads\
使用-r可以下载远程服务器的dir目录下的所有文件