在日常使用Linux的过程中,经常需要把文件从一台机器搬到另一台。比如换服务器、备份数据、团队共享项目代码,这些场景都绕不开跨Linux系统传文件。其实方法不少,选对了事半功倍。
用scp命令最直接
scp是基于SSH的安全拷贝工具,几乎所有Linux系统都自带。只要知道目标主机的IP、用户名和密码,就能快速传输。
比如要把本地的config.txt发给远程服务器上的/home/user目录:
scp config.txt user@192.168.1.100:/home/user/
反过来,从远程拉文件回来也一样:
scp user@192.168.1.100:/home/user/data.zip ./
如果文件夹多,加上-r参数递归复制:
scp -r /home/user/project user@192.168.1.100:/backup/
rsync适合大文件或增量同步
要是传的是大文件夹,或者以后还要反复同步,rsync更合适。它能跳过没变的文件,只传差异部分,省时间又省带宽。
基本用法和scp类似:
rsync -avz /home/user/docs/ user@192.168.1.100:/backup/docs/
其中-a保留权限信息,-v显示过程,-z开启压缩。末尾斜杠有讲究:源路径加了斜杠,表示复制里面的内容;不加,就连同目录一起搬过去。
用sftp交互式操作
如果你不习惯命令行一口气输完,sftp提供了一个类似FTP的交互界面,可以登录后一个个操作。
sftp user@192.168.1.100
连接成功后,支持put上传、get下载,还能ls、cd浏览远程目录,适合少量文件手动搬运。
挂载远程目录当本地盘用
有时候不想来回拷,只想“直接访问”对方的文件,可以用SSHFS把远程目录挂载到本地。
先安装sshfs(Ubuntu/Debian下):
sudo apt install sshfs
然后创建一个挂载点并挂上:
mkdir ~/remote-server
sshfs user@192.168.1.100:/home/user ~/remote-server
现在打开~/remote-server,看到的就是远程机器的内容,像操作本地文件一样拖来拖去。用完记得卸载:
fusermount -u ~/remote-server
小贴士
无论用哪种方式,确保两台机器之间的SSH能通。如果频繁连接,可以配SSH密钥登录,免去每次输密码的麻烦。
另外,网络环境差的时候,建议用rsync或加-C参数开启scp的压缩功能,减少传输量。
这些方法各有适用场景,平时根据文件大小、频率和操作习惯选一个顺手的就行。