我正在使用 Linux (centos) 机器,我已经使用ssh. 现在我的问题是如何将文件从一个系统复制到另一个系统?
假设,在我的环境中,我有两个系统,如System A和System B。我正在使用System A机器和其他一些使用System B机器。
如何将文件从 复制System B到System A?并且,将文件从 复制System A到System B?
Dop*_*oti 1376
句法:
scp <source> <destination>
Run Code Online (Sandbox Code Playgroud)
要复制文件B,以A在登录到B:
scp /path/to/file username@a:/path/to/destination
Run Code Online (Sandbox Code Playgroud)
要复制文件B,以A在登录到A:
scp username@b:/path/to/file /path/to/destination
Run Code Online (Sandbox Code Playgroud)
Rub*_*vvy 144
如果您需要替代方法。
安装 sshfs。如果您使用 ubuntu/debian:
sudo apt-get install sshfs
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用 centos/rhel:
sudo yum install fuse-sshfs
Run Code Online (Sandbox Code Playgroud)
或者,在 macOS 中
brew install sshfs
Run Code Online (Sandbox Code Playgroud)
创建一个空目录
mkdir /home/user/testdir
Run Code Online (Sandbox Code Playgroud)
“链接”或“挂载”两个目录
sshfs user@server.com:/remote/dir /home/user/testdir
Run Code Online (Sandbox Code Playgroud)
“取消链接”目录
fusermount -u /home/user/testdir
Run Code Online (Sandbox Code Playgroud)
在 BSD 和 macOS 上,卸载文件系统:
umount mountpoint
Run Code Online (Sandbox Code Playgroud)
或者
diskutil unmount mountpoint
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参见linuxjournal.com libfuse/sshfs
Dan*_*ite 61
有时你需要对 tar 感兴趣:
tar -C / -cf - \
opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \
--exclude=opt/widget/local.conf |
ssh otherhost tar -C / -xvf -
Run Code Online (Sandbox Code Playgroud)
小智 10
使用以下代码通过安全 shell 递归复制文件和文件夹:
scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path>
Run Code Online (Sandbox Code Playgroud)
完整的示例可能如下所示:
scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
Run Code Online (Sandbox Code Playgroud)
请注意,如果您没有 DNS 服务器来解析主机名,请改用您的 IP 地址。上面的例子可能看起来像这样
scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
Run Code Online (Sandbox Code Playgroud)
小智 9
如果他们在不同的端口上运行 SCP/SSH,请确保指定大写-P端口选项。
例子:
scp -P 7121 /users/admin/downloads/* root@155.138.150.12:/home/
Run Code Online (Sandbox Code Playgroud)
通过 SSH 控制的 NVIDIA Jetson 计算机使用的一种更简单的方法是连接 SFTP(SSH 文件传输协议)。
假设我希望UFO_blueprint.odt从 NASA 的远程服务器移动文档并将其移动到我的文档中。
cd 到您想要保存文件的位置
$ cd Documents
Run Code Online (Sandbox Code Playgroud)
连接
$ sftp sammy@your_server_ip_or_remote_hostname
Run Code Online (Sandbox Code Playgroud)
转到包含要传输的文件的目录。
$ cd NASA/secret_files/
Run Code Online (Sandbox Code Playgroud)
转移
$ get UFO_blueprint.odt
Run Code Online (Sandbox Code Playgroud)
要获取完整目录,请改用
$ get -r secret_files/
Run Code Online (Sandbox Code Playgroud)
如果速度(而不是安全性)是您的首要任务,那么请查看 netcat。在开始之前,请允许我警告您,这只能在受信任的网络中使用,因为 netcat 传输未加密。
首先,在接收端运行以下命令:
nc -lp 22222 >FileName
然后在发送端:
nc -w3 <receiver IP or hostname> 22222 <FileName
笔记:
小智 6
ssh user@domain "printf 'dir' | pax -w " | pax -r使用它代替 scp。Pax 由 IEEE 标准化 [1],而 scp 则被 lwn[2] 用户弃用。
[1] https://man.bsd.lv/pax.1#STANDARDS [2] https://lwn.net/Articles/835962/
来自“CLI 方式”上的其他人;-)