运维工程师必备命令之文件管理

2021-08-19 18:06:59 浏览数 (2)

文件管理:

代码语言:javascript复制
cp、mv、touch、mkdir、less、more、diff...

cp命令:

用来将一个或多个源文件或者目录复制到指定的目的文件或目录。

代码语言:javascript复制
语法:
cp [OPTION]... SOURCE DEST

option:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:可复制符号连接,不会破坏链接文件与源文件的链接关系。
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀~;
-b:覆盖已存在的文件目标前将目标文件备份,后缀默认是~;
-v:详细显示命令执行的操作。

重点掌握:

  • 【-u】只复制文件有更新的,否则不执行。
代码语言:javascript复制
#第一次将lutixia.txt复制到data目录:
[root@localhost ~]# cp lutixia.txt /data/
#更新文件
[root@localhost ~]# echo "this is update" > lutixia.txt 
#-u参数复制,提示是否覆盖,如果不想提示,可以使用cp替换cp
[root@localhost ~]# cp -u lutixia.txt /data/
cp: overwrite ‘/data/lutixia.txt’? y
[root@localhost ~]# cat /data/lutixia.txt 
this is update
#不更新文件,再次复制,并没有进行替换:
[root@localhost ~]# cp -u lutixia.txt /data/
  • 【-d|-a】复制软连接,这里要注意创建软连接时最好为绝对路径,否则可能会出现失效的软连接:
代码语言:javascript复制
#创建软连接(先不带绝对路径)
[root@localhost ~]# ln -s lutixia2.txt lutixia3.txt
[root@localhost ~]# ll 
lrwxrwxrwx  1 root root   12 Aug 20 21:43 lutixia3.txt -> lutixia2.txt
#如果直接复制,不带参数,会导致软连接失效,直接创建普通文件
[root@localhost ~]# cp lutixia3.txt /data/
[root@localhost ~]# ll /data/
total 4
-rw-r--r-- 1 root root 15 Aug 20 21:44 lutixia3.txt


#加上参数:
[root@localhost ~]# cp -d lutixia3.txt /data/
[root@localhost ~]# ll /data/
total 0
lrwxrwxrwx 1 root root 12 Aug 20 21:55 lutixia3.txt -> lutixia2.txt(红色失效的链接)

重新创建软连接(带绝对路径):
[root@localhost ~]# ln -s /root/lutixia2.txt  lutixia3.txt
[root@localhost ~]# cp -d lutixia3.txt /data/
[root@localhost ~]# ll /data/
total 0
lrwxrwxrwx 1 root root 18 Aug 20 21:57 lutixia3.txt -> /root/lutixia2.txt(现在是正常的)
  • 【-S】复制同名文件到目的目录时,对源文件进行备份,且自定义备份文件后缀名:
代码语言:javascript复制
#第一次复制
[root@localhost ~]# cp lutixia2.txt /data/
#第二次复制,对源文件进行备份:
[root@localhost ~]# cp -S ".`date  %F`" lutixia2.txt /data/
[root@localhost ~]# ll /data/
total 8
-rw-r--r-- 1 root root 15 Aug 20 22:02 lutixia2.txt
-rw-r--r-- 1 root root 15 Aug 20 22:02 lutixia2.txt.2019-08-20
  • 【-a】如果参数都记不住,就记住它吧,可以实现递归,复制软连接,保留文件属性:
代码语言:javascript复制
[root@localhost ~]# mkdir lutixia
#复制普通文件进去:
[root@localhost ~]# cp /etc/fstab lutixia
#创建软链接
[root@localhost ~]# ln -s /root/lutixia2.txt lutixia3.txt
#复制软连接进去:
[root@localhost ~]# cp -a lutixia3.txt lutixia
#复制目录到指定目录
[root@localhost ~]# cp -a lutixia /data/
#查看文件属性,都有保留:
[root@localhost ~]# ll /data/lutixia/
total 4
-rw-r--r-- 1 root root 501 Aug 20 22:15 fstab
lrwxrwxrwx 1 root root  18 Aug 20 22:15 lutixia3.txt -> /root/lutixia2.txt

more命令

显示文件内容,每次显示一屏

代码语言:javascript复制
more  file
打开文件后可操作:
空格    显示下一屏内容
f       显示下两屏内容
b       回退上一屏

less命令:

分屏上下翻页浏览文件内容

代码语言:javascript复制
less  file
打开文件后可操作:
空格/f    显示下一屏内容
b       回退上一屏

mkdir命令:

用于创建目录

  • 【-p】若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录,且如果目录已存在也不会提示报错
代码语言:javascript复制
创建多级目录:

#/data/可以事先不用创建:
[root@localhost ~]# mkdir -p /data/lutixia
[root@localhost ~]# ll /data/
总用量 0
drwxr-xr-x 2 root root 6 8月  20 23:46 lutixia
  • 【-m 】设置目录的权限
代码语言:javascript复制
创建特定权限的目录(默认是755):
[root@localhost ~]# mkdir -m 700 /data/lutixia2
[root@localhost ~]# ll /data/
总用量 0
drwxr-xr-x 2 root root 6 8月  20 23:46 lutixia
drwx------ 2 root root 6 8月  20 23:49 lutixia2

diff命令:

以逐行的方式来比较两个文件的不同之处

代码语言:javascript复制
#对比文件:
diff  file1  file2


#对比目录:
如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件
diff  dir1 dir2

文件传输:

代码语言:javascript复制
scp、rsync、

rsync命令:

远程数据同步工具,它传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

重点掌握:

  • 同步本地目录,使目的目录与源目录保持绝对的一致
代码语言:javascript复制
rsync -av --delete  A/ /data/B

B与A保持绝对的一致,B中存在,而A中不存在的文件将被删除。

ps:本地可实现同步并改名,远程不支持。
  • 将本地目录同步到远程目录:
代码语言:javascript复制
rsync -av  A/ 192.168.0.132:/data/

将本地A目录所有文件,同步至远程服务器132上,
同理,要想实现绝对的一致,需要加上--delete参数。

使用ssh协议连接到远程,所以可以将本机公钥发给远程主机,
否则每次执行都会提示出入密码。
  • 将远程目录同步到本地:
代码语言:javascript复制
rsync -av  192.168.0.132:/data/C .

.           表示将远程目录C,同步到本地C目录。
            要注意如果这里改为D目录,那么将会D这个目录的下一级生成C目录。

scp命令:

加密的方式在本地主机和远程主机之间复制文件。

重点掌握:

  • 本地目录复制到远程:
代码语言:javascript复制
scp -r  lutixia/ 192.168.0.132:/data
  • 本地文件复制到远程:
代码语言:javascript复制
scp fstab 192.168.0.132:/data/
  • 启动压缩:
代码语言:javascript复制
scp -rC  lutixia/ 192.168.0.132:/data/

传输大文件比较有优势

0 人点赞