Linux基础知识(三)
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
远程目标目录里存在、但本地源目录没有的文件 / 文件夹,直接删除,让远程和本地完全一模一样。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)