1、主要内容

远程文件的方法:文件夹挂载、远程拷贝、远程交互。

工具 底层协议 核心特性 最佳使用场景
NFS RPC 目录永久挂载,透明读写 内网多机器长期共享读写、持续访问文件
scp SSH 单次全量拷贝,简单无交互 少量文件一次性快速传输、临时拷贝
sftp SSH 交互式远程文件管理 手动浏览、增删改远程零散文件
rsync SSH/NFS 本地 增量差异同步、备份 定时备份、大量文件同步、外网低速传输

2、共享文件(NFS)

 NFS目前只用在Linux之间共享文件系统。不适合用在Linux和Windows之间的共享,与Windows之间共享需要CIFS通过安装samba服务实现共享,在这里不涉及。

ubuntu nfs 挂载 - 知乎      |      在Linux中安装、配置和挂载NFS的完整指南_nfs挂载-CSDN博客

上述都是很好nfs文件挂载的教材。接下来我讲点不一样的:

服务器端操作:目的就是将文件夹共享出来

 (1)安装软件,创建文件夹

nfs-kernel-server 对应的配置文件为:/etc/default/nfs-kernel-server ;在接下来的错误中我尝试改变这个文件,没有起到任何效果。

apt update 
apt install nfs-kernel-server             //安装服务器端的nfs
mkdir -p /mnt/nfs_share                   //创建文件夹
chmod 777 /mnt/nfs_share                  //给文件夹权限
chown -R nobody:nogroup /mnt/nfs_share    //不设置所属和分组

  (2)编辑/ect/exports文件写入:/mnt/nfs_share 192.168.31.0/24(rw,sync,no_root_squash)  

sudo vi /etc/exports

# 语法:<共享目录> <客户端IP/网段>(权限选项)  
/mnt/nfs_share 192.168.31.0/24(rw,sync,no_root_squash)   

//写入内容查看
tian@tian-hang:/mnt$ sudo exportfs -rav
[sudo] tian 的密码: 
exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.31.0/24:/mnt/nfs_share".
  Assuming default behaviour ('no_subtree_check').
  NOTE: this default has changed since nfs-utils version 1.0.x

exporting 192.168.31.0/24:/mnt/nfs_share

(3)重启服务

//启动服务
sudo systemctl start nfs-server  # 启动服务
sudo systemctl enable nfs-server  # 设置开机自启

//配置防火墙(如需必要)
sudo ufw allow 2049/tcp 
sudo ufw allow 111/tcp 
sudo ufw enable

(4)检查共享
        文件夹已经共享出来了

tian@tian-hang:/mnt$ showmount -e localhost
Export list for localhost:
/mnt/nfs_share 192.168.31.0/24

客户端操作:

        (1)就是让共享的文件夹挂载到系统中;
        (2)这里采用的是sshfs工具,加密信号,默认走的是22号端口
        (2)注意我这是临时挂载;可以配置为开机挂载

//准备挂载文件夹
mkdir -p /mnt/nfs_share                   //创建文件夹
chmod 777 /mnt/nfs_share                  //给文件夹权限

//客户端安装 sshfs
sudo apt install sshfs

//使用 SSH 挂载
sudo sshfs tian@192.168.31.104:/mnt/nfs_share /mnt/nfs_client

// 卸载
sudo umount /mnt/nfs_client


客户端:
root@kickpi:/mnt/nfs_client# ls
123.txt
root@kickpi:/mnt/nfs_client# cat 123.txt
jojo
root@kickpi:/mnt/nfs_client#

服务器:
tian@tian-hang:~$ cd /mnt/nfs_share/
tian@tian-hang:/mnt/nfs_share$ ls
123.txt
tian@tian-hang:/mnt/nfs_share$ cat 123.txt 
jojo
tian@tian-hang:/mnt/nfs_share$ 

2、文件传输(SCP)

SSH家族中两款文件传输工具sftp和scp。

单次文件传输:A--->B ;没有交互,就像发消息一样。

文件传输:
scp -r meshes root@192.168.31.46:/home/cat            //meshes文件夹名 传输文件夹
scp hellogl2 cat@192.168.103.102:/home/cat           //hellogl2文件名   传输文件

3、文件传输(sftp)

        交互式操作

sftp -P 2222 tian@192.168.31.104    //-p用来指定端口,默认22号端口
put -r /local/dir /remote/path       //上传文件夹,-r是递归的意思,单个文件不用加
get -r /remote/dir ./local           //下载远程文件夹 -r是递归的意思,单个文件不用加

root@kickpi:/mnt# sftp tian@192.168.31.104
tian@192.168.31.104's password:
Connected to 192.168.31.104.
sftp> cd /mnt/
sftp> cd nfs_share/
sftp> ls
123.txt
sftp> get -r ../nfs_share /mnt/12/     //发送文件
Fetching /mnt/nfs_share/../nfs_share/ to /mnt/12/nfs_share
Retrieving /mnt/nfs_share
123.txt                                                                                                            100%    5     0.7KB/s   00:00
sftp> exit
root@kickpi:/mnt# cd 123 && ls
-bash: cd: 123: No such file or directory
root@kickpi:/mnt# cd 12 && ls
nfs_share
root@kickpi:/mnt/12#

非交互式操作

# 下载整个目录到本地
sftp -r tian@192.168.31.104:/mnt/nfs_share /mnt/12/

# 上传本地目录到服务器
sftp -r tian@192.168.31.104:/mnt/nfs_share < /mnt/12/

4、文件夹同步(rsync)

(1)主要是用来做文件同步的,比较常用的命令

(2)重复文件跳过,仅同步改动部分;支持定时 crontab 做自动备份。

# 拉取远程到本地,压缩、显示进度
rsync -avz --progress tian@192.168.31.104:/mnt/nfs_share/ /mnt/nfs_client/

# 本地推送到远程,删除目标多余文件(镜像同步)
rsync -avz --delete /mnt/nfs_client/ tian@192.168.31.104:/mnt/nfs_share/

# 自定义SSH端口、限速5MB/s
rsync -avz --bwlimit=5000 -e "ssh -p 2222" /local/ tian@ip:/remote/


-a    归档模式,最常用等价组合:-rlptgoD
-v    verbose 详细输出,打印正在传输的文件
-z    传输时实时压缩,外网/低速局域网节省流量,内网高速可去掉提升速度

参数新增:--progress
实时打印当前文件传输进度、已传大小、速度、剩余时间。

镜像同步核心参数:--delete
远程目标目录里存在、但本地源目录没有的文件 / 文件夹,直接删除,让远程和本地完全一模一样。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐