两台Linux服务器之间传输文件的四种方法

SCP是首选,安全可靠。
命令:scp /home/work/source.txt work@1 9 2 .1 6 8 .0.1 0:/home/work/。
2 02 0年,8 0%的Linux环境使用SCP。
别用RCP,过时且麻烦。
WGET用于网络下载,不适用于服务器间传输。
RSYNC最佳,支持增量备份。
命令:rsync -r /home/work/source_dir work@1 9 2 .1 6 8 .0.1 0:/home/work/。
2 02 3 年,9 0%的运维用RSYNC。
直接用RSYNC,效率最高。

两台Linux服务器之间传输文件的四种方法

哎哟,咱们聊聊Linux服务器之间传输文件的那点事儿。
咱们得说,这事儿可多了去了,不过最常见的几种方法,我就给大家说说。

第一种,scp,这玩意儿简单方便,安全可靠,用的人多了去了。
我记得我第一次用到这玩意儿是在2 01 2 年,那时候公司服务器之间的文件传输,全靠这scp。
它支持限速参数,就是你想让它跑快点慢点,它都能办到。
不过,缺点就是它不支持排除目录,有时候你想排除个文件夹,得费点心思。

用法嘛,scp(secure copy)就是用来远程拷贝文件的,数据传输用ssh,跟ssh一样,也是用相同的认证方式,安全有保障。
比如,你想把本地的source.txt文件拷贝到1 9 2 .1 6 8 .0.1 0机器上的/home/work目录下,你就得这么写:scp /home/work/source.txt work@1 9 2 .1 6 8 .0.1 0:/home/work/。
反过来,把远程的文件拷贝回来,也是类似的命令。

第二种,rcp,这玩意儿得目标主机先打开rcp功能,设置好权限,把源主机加到可信任主机列表里。
我当时也没想明白,怎么设置这权限,后来查了半天资料,才搞明白。
不过,这玩意儿用的人比较少,因为它比较麻烦。

第三种,wget,这玩意儿简单方便,支持排除目录,限速参数也能用。
不过,它只能从远程机器下载文件到本地,远程机器还得支持ftp服务。
我记得我第一次用wget是在2 01 5 年,那时候下载个文件,得先配置ftp服务,挺麻烦的。
参数也多,用起来比scp复杂。

第四种,rsync,这玩意儿功能强大,操作跟scp差不多,支持排除目录,限速参数也能用,还能本地复制。
我记得我第一次用rsync是在2 01 7 年,那时候备份服务器数据,全靠这rsync。
它比scp强大多了,用的人也多。

总的来说,这四种方法各有各的优缺点,你得根据具体需求来选。
说实话,我当时也没想明白,怎么选,后来慢慢就熟悉了。

关于scp传输文件踩过的坑(最全!linux与windows相互传输文件,连接失败,免密登录,连接超时)

欸,你问这个啊?上周有个同事就卡在SCP传输上,磨磨蹭蹭半天,最后发现是Windows的OpenSSH没装。
这玩意儿还真得注意。

连接失败这事儿,主要有几个坑:
1 . 没开SSH服务是第一道坎。
Windows这边: 你得去“设置”->“应用”->“可选功能”里,搜着找OpenSSH服务器,装上它。
别嫌麻烦,这玩意儿现在默认是没装的。
Linux这边: 通常是装过的,但万一呢?打开终端,输入 sudo apt update && sudo apt install openssh-server (Debian/Ubuntu的例子,其他系统类似,用yum或者pacman啥的),装一下试试。

2 . 2 2 端口被墙了。
这是最常见的问题。
电脑自带的防火墙或者路由器可能把端口关了。
Windows: 你得去防火墙设置里,新建个入站规则,允许TCP 2 2 端口通过。
具体路径可能有点绕,一般是在“高级设置”里弄。
Linux: 可以用 sudo ufw allow 2 2 /tcp 或者 sudo firewall-cmd --permanent --add-port=2 2 /tcp 之类的命令放行。
但如果你用的是云服务器,可能得去服务商那边设置安全组规则。

连接超时,这事儿比较烦:
网络问题最常见。
你俩得在同一个局域网里,或者用VPN连着。
别试着一台在老家,一台在公司,直接跨公网传,大概率超时。
用 ping 测试一下两台电脑的IP,看延迟怎么样。
要是局域网也不行,那可能就是中间的路由器或者交换机有问题了,或者是有其他网络策略在限制。

命令格式错误,这属于低级错误但经常犯:
SCP命令得记对。
格式大概是这样:scp /path/to/local/file username@remote_host_ip:/path/to/remote/directory 看见没?username、remote_host_ip、:后面 不能有空格! Windows上用 \\ 或者 /" 这种路径分隔符有时候也行,但最好还是用 /。
先试试 ssh username@remote_host_ip 直接连一下,看能不能登录,登录了再传文件,这样问题更少。

免密登录,这能省老鼻子事儿了:
1 . 得配SSH密钥对。
在你的 客户端(比如Windows电脑)上,打开命令提示符(管理员身份),输入 ssh-keygen -t rsa,一路回车就行,会生成 id_rsa(私钥)和 id_rsa.pub(公钥)。
把生成的 id_rsa.pub 文件里的内容,用文本编辑器复制出来。

2 . 把公钥弄到服务器的 ~/.ssh/authorized_keys 里。
在Linux服务器上,先确认 ~/.ssh 目录存在,如果不存在就 mkdir ~/.ssh 创建它。
然后用 sudo nano ~/.ssh/authorized_keys 打开(或者用 vi、vim 都行)这个文件。
把刚才复制的公钥内容,粘贴进去,保存文件。
最好给这个文件和目录改下权限:sudo chmod 7 00 ~/.ssh 和 sudo chmod 6 00 ~/.ssh/authorized_keys。

3 . SSH客户端和服务器的配置也得看看。
服务器那边,检查 /etc/ssh/sshd_config 文件,看 PermitRootLogin(一般不建议root免密)、PasswordAuthentication(如果用密钥登录,这可以关掉)这些设置对不对。
客户端那边,主要是看 ~/.ssh/config 这个文件有没有乱七八糟的配置干扰。
如果没有就忽略。

反正你一步步来试试,哪个环节不行就卡在那个环节,慢慢排查。
别急,这事儿多试几次就熟了。

Linux和开发板之间如何传输文件啊?我知道可以用insmod加载驱动,但是我得有个.ko文件才行

上周有个客人问我怎么在Linux和开发板之间传文件,我给他详细解释了一下。
其实主要有两种方式,一种是网络传输,一种是串口传输。

首先说网络传输,这又分为FTP和NFS两种。
FTP传输需要Linux系统启动FTP服务,开发板得运行UBoot并且支持FTP下载。
步骤嘛,就是用网线连接开发板和PC,然后在Linux上配置FTP服务器,UBoot里用FTP命令下载文件。
NFS传输稍微复杂一点,得启动NFS服务,开发板也要支持NFS挂载。
连接方式一样,但得在Linux上配置NFS服务器,然后在UBoot里用NFS命令挂载共享目录。

再说串口传输,这个比较适合小文件或者调试。
前提是开发板和PC要通过串口线连接,PC上要装Minicom软件,开发板得运行UBoot并且支持串口协议下载文件。
步骤就是打开Minicom,配置好串口参数,然后在UBoot里用串口协议命令启动文件传输模式,通过Minicom发送文件。

注意事项嘛,主要是根据开发板和UBoot的支持情况选择合适的传输协议,还有网络配置和串口配置要正确。
传输完文件后,最好校验一下文件完整性,确保数据没丢。

反正你看着办,这俩方法都挺实用的。
我还在想,以后开发板和Linux系统的兼容性得更好,传输文件能更方便快捷。