两台Linux电脑之间一键传输硬盘数据的方法

2022-12-04 11:16:16 11点赞 45收藏 12评论

两台Linux电脑之间的数据怎么互相拷贝呢?用移动硬盘吗?不用这么麻烦,只要这两台Linux连在同一个局域网下就可以互相传输数据,不需要依赖移动硬盘或者NAS之类的第三方设备。

我双12买了2TB的nvme固态硬盘,京东自营保修5年的,不知道什么颗粒,5年质保放心用:

两台Linux电脑之间一键传输硬盘数据的方法

为什么买这个牌子?因为预算有限,这是双12最便宜的2TB的nvme了吧?

两台Linux电脑之间一键传输硬盘数据的方法

有硬盘空间了,就尝试着把桌面Linux工作站的计算也分一点给笔记本Linux工作站(两条Linux一起算更快呀)。别看我下面这台电脑是2019年买的i5-9400的神舟笔记本,我升级成64GB的DDR4内存(两个内存插槽都插满了),还升级了共4TB的固态硬盘,做Linux笔记本工作站绰绰有余了:

两台Linux电脑之间一键传输硬盘数据的方法

第一步、要传入数据的Linux电脑开启SSH

要传入数据的那台Linux电脑要开启SSH,要传出数据的Linux电脑是否要开启SSH我就不确定了(因为要传出数据的那台电脑我之前也开启了ssh)。假如遇到报错,就把要传出数据的那台电脑也开启SSH吧。

开启SSH非常简单,在要传入数据的那台电脑输入下面的命令:

sudo apt-get install openssh-server

输入密码回车后,会出现下图的提示,如果问你 [Y/n], 一律输入 y 回车:

两台Linux电脑之间一键传输硬盘数据的方法

安装设置完成后,会出现命令提示符等待你的下一步命令:

两台Linux电脑之间一键传输硬盘数据的方法

输入下面的命令, 回车:

两台Linux电脑之间一键传输硬盘数据的方法

就是用vi软件进入sshd_config文件进行编辑:

两台Linux电脑之间一键传输硬盘数据的方法

先按键盘上的ESC键,再按键盘上的 i 字母键,这时候会进入insert模式,用键盘上的“向下”方向键将光标拖到sshd_config文件末尾,在sshd_config文件末尾加上下面的这一句话:

PermitRootLogin yes

两台Linux电脑之间一键传输硬盘数据的方法

加上PermitRootLogin yes这句话之后(见上图),点击ESC键,之后按键盘上的4个按钮 :wq! 回车,即可保存你刚才输入的PermitRootLogin yes这句话。记住是:wq!这4个键再回车,也就是“冒号wq感叹号”这4个键,再回车,其中wq是两个字母键(我也不知道为什么vi编辑器保存要设置成:wq!再回车,反正如果你要用vi或者是vim只能这么来保存退出)。

之后敲下面的4条命令,每条命令敲完之后,回车一下:

sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
sudo service ssh start

sudo systemctl enable ssh

上面的4条命令敲完之后,你的SSH就开启了。

第二步、用scp来传输单个文件或整个文件夹(一条命令搞定)

用下面的命令来传输单个文件,在第一台Linux电脑上输入下面的命令,你的第一台电脑上的/home/work/source.txt 这个文件,就会被拷贝到第2台Linux电脑的/home/work/ 文件夹下了。

scp /home/work/source.txt 要传入的电脑名@192.168.0.10:/home/work/

注意:192.168.0.10是你要传入的Linux电脑的IP地址(原文件所在电脑的ip地址无需输入,只要将两台Linux连接到同一个局域网即可)

如果你的第2台电脑名字是yasden,IP地址是192.168.1.32就用下面的命令:

scp /home/work/source.txt yasden@192.168.1.32:/home/work/

这样你的第一台电脑上面的/home/work/source.txt文件,就被拷贝到yasden电脑的/home/work/文件夹下面了。拷贝完成后可以看到文件传输速度:

两台Linux电脑之间一键传输硬盘数据的方法

如果你用scp来拷贝文件夹,例如下面的命令,回车后,会报错:

scp /home/yasden/data/download yasden2@192.168.31.152:/home/yasden/

会提示 /home/yasden/data/download不是一个文件:

两台Linux电脑之间一键传输硬盘数据的方法

如果拷贝文件夹,需要在scp后面接一个-r,这样才不会报错。也就是加上-r可以拷贝文件夹,例如下面的命令用来将第一台电脑的/home/yasden/data/download文件夹拷贝到yasden2电脑的/home/yasden2/data_3T文件夹下面:

scp -r /home/yasden/data/download yasden2@192.168.31.152:/home/yasden2/data_3T


拷贝过程中,会提示每个文件的传输速度:

两台Linux电脑之间一键传输硬盘数据的方法

第三步、用rsync传输文件(一条命令搞定)

还可以用rsync这个命令来拷贝文件(注意rsync拷贝文件夹的话,后面需要加-r):

rsync -r /home/work/sourcedir 要传入的电脑名@192.168.0.10:/home/work/

如果你的第2台电脑名字是yasden,IP地址是192.168.1.32就用下面的命令:

rsync -r /home/work/sourcedir yasden@192.168.1.32:/home/work/

这样,你的第一台电脑的/home/work/sourcedir这个文件夹下面的所有文件,都被拷贝到yasden电脑的/home/work/文件夹下面了。

命令输入回车之后,会让你输入第2台电脑的登录密码,输完密码之后,就开始文件传送了。

其他传输方法

除了上面说的rsync和scp,还有其他的传输方式,大家自行检索吧。

两台Linux电脑之间一键传输硬盘数据的方法

全文完,谢谢观看。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
12评论

  • 精彩
  • 最新
  • 我使用中总结了3种方式:1.ssh,优点是设置简单(包括scp rsync,不过我更喜欢用sshfs直接把远程目录挂载到本地)2.ftp,这个开销比ssh小,对于性能弱鸡没有硬件AES的主机,ftp的速度要远大于ssh方式。缺点是需要单独配置ftp服务器。这个也可以用curlftpfs挂载到本地,但是并发性能很差。3.利用netcat 、 tar 、再+ zstd之类的压缩工具,直接使用TCP传输,效率惊人,最快的方式。拿来备份最好用。缺点是要在本地和远程两边敲命令,比较麻烦。

    校验提示文案

    提交
    专业哦 [傻笑] 好专业 [张小草_笑]

    校验提示文案

    提交
    方法2也可以直接用sftp,不用搭服务器,有ssh server就可以了,方法3类似的一个方法是用rsync的服务器和客户端模式传输,也支持数据压缩。

    校验提示文案

    提交
    收起所有回复
  • 会用LINUX的都是大佬!

    校验提示文案

    提交
    大佬自己不用linux的,大佬叫人去搞 [傻笑]

    校验提示文案

    提交
    收起所有回复
  • 为啥我用scp传文件会丢内容?

    校验提示文案

    提交
    网线碰掉了 [傻笑]

    校验提示文案

    提交
    收起所有回复
  • 你说好的一键

    校验提示文案

    提交
    是三键? [傻笑] [傻笑]

    校验提示文案

    提交
    收起所有回复
  • 疯狂sudo,我伙呆

    校验提示文案

    提交
  • 也不过十多步,打入几十行命令而已,真是简单了。

    不过我用verysync

    校验提示文案

    提交
  • 还这不是,还有更便宜的。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
45
扫一下,分享更方便,购买更轻松