scp
上传/下载文件
$ scp ~/targe.tar.gz root@192.168.0.11:~/large.tar.gz
$ scp root@192.168.0.11:~/large.tar.gz ~/targe.tar.gz
上传/下载目录:
$ scp -r ~/targe root@192.168.0.11:/root
$ scp -r root@192.168.0.11:~/targe ~/targe
rsync
经常用到的参数:
-a: archive mode,相当于-rlptgoD这7个选项
-r: --recursive
-v: verbose mode
-z: 压缩传输
-P: --partial --progress 断点续传和显示进度
-l, --links: 保留软链接
-p, --perms: 保持文件权限
-t, --times: 保持文件时间信息
-g, --group: 保持文件所属组信息
-o, --owner: 保持文件所属人信息
-D, --devices: 保持设备文件信息
--delete: 如果源端没有此文件,那么删除目的端的文件(必须与-r一起使用)
--exclude: 忽略文件
文件断点下载/上传:
$ rsync -P --rsh=ssh root@192.168.0.11:/root/large.tar.gz ~/targe.tar.gz
$ rsync -P --rsh=ssh ~/targe.tar.gz root@192.168.0.11:/root/large.tar.gz
目录断点下载/上传:
$ rsync -P --rsh=ssh -r root@192.168.0.11:/root/large ~/targe
$ rsync -P --rsh=ssh -r ~/targe root@192.168.0.11:/root/large
忽略文件
# Exclude a single file
$ rsync -avz --exclude 'file' source/ destination/
# Exclude a type of files
$ rsync -avz --exclude '*.typ' source/ destination/
# Exclude a folder
$ rsync -avz --exclude 'folder' source/ destination/
# Exclude multiple files or folders
$ rsync -avz --exclude '*.file_type' --exclude 'folder' source/ destination/
后台运行:
# bg.sh
rsync -P --rsh=ssh -r root@192.168.0.11:/root/storage / &
$ chmod +x bg.sh
$ nohup ./bg.sh
管道传输
gzip -c file | ssh root@192.168.0.11 "gunzip -c - > file"
对 file 使用 gzip 压缩,-c
参数表示输出到 stdout;gunzip -c -
中的 -
表示接收从管道传进的 stdin
tar zcv file | ssh root@192.168.0.11 -p 22 'tar xz'
对 file 使用 tar 压缩,但是不输出到文件,而是通过管道传给 ssh
tar cf - /tmp/big_folder | ssh server 'tar xC /tmp/ -f -'
对 file 使用 tar 压缩, ssh
nc(netcat)
nc 可以在 2 台机器之间建立 tcp 或者 udp 连接,并在 2 个端口之间传输数据流
server:
$ nc -l port < filename
client:
$ nc server_ip port > filename
可以结合 dd
命令克隆磁盘分区,以下操作会克隆主机A的 /dev/vda
到主机B 的 /dev/sda
:
# 主机A执行
$ dd if=/dev/vda | gzip -c | nc -l 50522
# 主机B执行
$ nc server_ip 50522 | gzip -dc | dd of=/dev/sda
常用参数:
-l 用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接
-p port 指定nc要使用的端口。若之前已指定-l,则这里的-p指定具体的侦听端口;若未指定-l,则表示向这个端口发起连接
-s hostname/ip-address,指定发送数据的源IP地址,适用于多网卡机器
-u 指定nc使用UDP协议,默认为TCP
-v 输出交互或出错信息
pv(pipe viewer)
pv 可以通过管道显示数据处理进度的信息。这些信息包括已经耗费的时间,完成的百分比(通过进度条显示),当前的速度,全部传输的数据,以及估计剩余的时间。
要使用 PV,需要配合合适的选项,把它放置在两个进程之间的管道。命令的标准输入将会通过标准输出传进来的,而进度会被输出到标准错误输出。
$ cat filename | pv -b | nc -l port
$ nc server_ip port | pb -b > filename
wget
$ wget -c -t 0 -O filename url
- older
- Newer