SSH远程命令实践:如何打包、压缩并传输服务器文件
大家好,今天我要分享的是如何使用SSH命令来远程打包、压缩服务器上的文件,并将其传输到本地或其他服务器。这对于需要在远程服务器上进行文件备份或迁移的场景非常有用。
以下是本文的主要内容:
一、命令详解
我们要执行的命令是:
ssh root@192.168.3.157 "tar -C /mnt/UDISK -cvf - logs app_debug data/db data/map --exclude data/db/database.db-journal|gzip -ck" 1>logs.tar.gz
这条命令的作用如下:
- 通过SSH协议登录到IP地址为192.168.3.157的服务器,并以root用户身份执行命令。
- 使用tar命令在/mnt/UDISK目录下创建一个包含指定文件和目录的归档文件,并排除某个文件。
- 将tar命令的输出通过管道传递给gzip命令进行压缩。
- 将压缩后的数据流重定向到本地文件logs.tar.gz。
二、命令分解
-
tar -C /mnt/UDISK -cvf - logs app_debug data/db data/map --exclude data/db/database.db-journal
:-C /mnt/UDISK
:指定tar命令的工作目录。-cvf -
:创建归档文件,并将内容输出到标准输出。logs app_debug data/db data/map
:指定要打包的文件和目录。--exclude data/db/database.db-journal
:排除不需要打包的文件。
-
|gzip -ck
:|
:管道符号,将tar命令的输出传递给gzip命令。gzip -ck
:压缩数据,-c表示输出到标准输出,-k表示保留原始文件。
-
1>logs.tar.gz
:- 将gzip命令的输出重定向到本地文件logs.tar.gz。
三、文件传输
压缩后的文件已经通过SSH连接直接传输到了本地机器。如果你需要将文件传输到其他位置,可以使用以下命令:
- 使用scp命令:
scp logs.tar.gz user@other_server_ip:/destination/path/
- 使用sftp命令:
sftp user@other_server_ip
> put logs.tar.gz /destination/path/
- 使用rsync命令:
rsync -avz logs.tar.gz user@other_server_ip:/destination/path/
四、总结
通过本文,我们学习了如何使用SSH命令远程打包、压缩并传输服务器文件。