将本地文件复制到远程主机
cat localfile | ssh user@host "cat - >> ~/remotefile"
命令解析:
cat localfile:将本地文件localfile的内容输出到标准输出|:将标准输出作为输入传递给下一个命令ssh user@host:连接到远程主机host,使用user作为用户名"cat - >> ~/remotefile":在远程主机上执行的命令,将标准输入内容追加到~/remotefile文件中
将远程主机上的文件复制到本地
ssh user@host "cat ~/remotefile" | cat - > localfile
命令解析:
ssh user@host "cat ~/remotefile":连接到远程主机host,使用user作为用户名,执行cat ~/remotefile命令,将~/remotefile文件的内容输出到标准输出|:将标准输出作为输入传递给下一个命令cat -:将标准输入内容输出到标准输出>:将标准输出重定向到本地文件localfile中
在两台远程主机之间复制文件
ssh user1@host1 "cat ~/remotefile" | ssh user2@host2 "cat - >> ~/remotefile"
命令解析:
ssh user1@host1 "cat ~/remotefile":连接到远程主机host1,使用user1作为用户名,执行cat ~/remotefile命令,将~/remotefile文件的内容输出到标准输出|:将标准输出作为输入传递给下一个命令ssh user2@host2 "cat - >> ~/remotefile":连接到远程主机host2,使用user2作为用户名,执行cat - >> ~/remotefile命令,将标准输入内容追加到~/remotefile文件中
扩展用法
备份本地磁盘到远程主机
dd if=/dev/sda1 | tar -czvf - | ssh user@host "cat - >> /backup/system.back"
命令解析:
dd if=/dev/sda1:从/dev/sda1设备读取数据|:将标准输出作为输入传递给下一个命令tar -czvf -:将标准输入压缩为 tar 归档文件,压缩级别为 9,输出到标准输出|:将标准输出作为输入传递给下一个命令ssh user@host "cat - >> /backup/system.back":连接到远程主机host,使用user作为用户名,执行cat - >> /backup/system.back命令,将标准输入内容追加到/backup/system.back文件中
从远程主机恢复本地磁盘
ssh user@host "cat /backup/system.back | tar -xzvf -" | dd of=/dev/sda1
命令解析:
ssh user@host "cat /backup/system.back | tar -xzvf -":连接到远程主机host,使用user作为用户名,执行cat /backup/system.back | tar -xzvf -命令,将/backup/system.back文件的内容解压到标准输出|:将标准输出作为输入传递给下一个命令dd of=/dev/sda1:将标准输入写入/dev/sda1设备
用 ssh 和 cat 实现文件传输
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
赞赏支持
如果觉得文章对你有帮助,可以请作者喝杯咖啡 ☕
评论交流
欢迎留下你的想法