实验室分配了服务器,有必要了解以下远程数据的拷贝
封面《月に寄りそう乙女の作法》
前言
向实验室申请了一个服务器准备炼丹,第一步暂时打算先上传数据集。对服务器上文件的远程拷贝只用过 VNC 和 vscode。vscode 在打开服务器中含有较多文件的目录容易卡死,且拷贝文件的进度也不容易观察,只能通过当前的网速进行判断。VNC 只拷贝过一些小型文件,但是个人猜测对大文件的传输也不太行。因此有必要了解一下 linux 自带的 scp 命令。
scp
scp 命令是 secure copy 的缩写,是一个远程文件拷贝命令。
语法
对于这种命令通过 man
命令可以查看其详细的文档。man scp
1 | scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] |
参数说明
- -1: 强制使用 ssh1
- -2: 强制使用 ssh2
- -3: 通过本地 host 传输两个远程服务器直接的拷贝。如果没有该选项,将会直接在两个远程服务器之间拷贝。
- -4: 强制 scp 只使用 ipv4
- -6: 强制 scp 只是用 ipv6
- -B: 选择批次模式(不使用密码或者密钥)
- -C: 开启压缩模式
- -c cipher: 以 cipher 将数据传输进行加密,这个选项将直接传递给 ssh
- -F ssh_config: 指定一个替代的 ssh 配置文件,此参数直接传递给 ssh
- -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给 ssh
- -l limit: 带宽限制,单位 Kbit/s
- -o ssh_option: 传输可选项到 ssh 中,并没有 scp flag
- -P: 指定远程服务器的端口,注意大写 P,因为小写已经被使用了
- -p: 保留原始文件的修改时间,访问时间和访问权限
- -q: 安静模式,不显示进度条
- -r: 递归拷贝整个文件夹
- -S program: 指定加密传输时所使用的程序。此程序必须能够理解 ssh (1) 的选项
- -v: 详细模式
实例
废话说了一堆不如直接上手写测试
本地复制文件到远程
1 | scp local_file remote_username@remote_ip:remote_folder |
本地目录复制到远程
1 | scp -r local_folder remote_username@remote_ip:remote_folder |
远程文件复制到本地
1 | scp remote_username@remote_ip:remote_file local_file |
远程目录复制到本地
1 | scp -r remote_username@remote_ip:remote_folder local_folder |
sftp
在看 scp 命令文档的适合发现了里面有写 sftp (secure file transfer program)。出于好奇,便查询一下 sftp 的使用方法。
语法
1 | sftp [-1246aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path] [-F ssh_config] |
许多参数与 scp 类似这里不再多说
实例
连接
1 | sftp -P port user@ip |
获取远程文件
1 | sftp> get remoteFile |
上传本地文件
1 | sftp> put localFile |
参考资料
Linux scp 命令
How To Use SFTP to Securely Transfer Files with a Remote Server
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 qxdn的乐园!
评论