Linux面试题系列

[水深预警]一套看似简单的备份(复制)题目

2019-04-11  本文已影响440人  李导996

运维学习交流群-点我加群:598972270

题目

[多选]将文件oldboy.txt复制为oldboy.txt.bak可以用下面哪些命令( )

不看下面的答案和解析 思考下选择哪几个?

答案

全是对的.都可以实现备份的功能.
这题你怎么选都是对的能实现功能.


考的全会,蒙的全对

解析

选项A cp oldboy.txt oldboy.txt.bak

最基础的备份方法 cp copy复制或备份
所以A没什么问题

cp oldboy.txt oldboy.txt.bak

选项B cat oldboy.txt > oldboy.txt.bak

>是重定向符号,表示先清空文件内容,再把信息写入到文件中

cat oldboy.txt > oldboy.txt.bak

这里 就是显示oldboy.txt 文件内容 然后把内容通过>写入到oldboy.txt.bak这个文件中
也可以实现备份功能.

选项C cat < oldboy.txt >oldboy.txt.bak

这个有意思了,比B选项多了1个 <(小于号)
<表示标准输入重定向,主要是用来指导命令读取文件的. 经常需要用"<"的命令很少,常用的有tr和xargs
注一些命令也可以使用 < 但是使用和不同效果一样比如三剑客等等。
这道题里面的 <可以省略所以和B是一样的。
都可以实现备份的功能

[root@oldboyedu59 ~]# cat /oldboy/oldboy.txt
oldboy
[root@oldboyedu59 ~]# cat < /oldboy/oldboy.txt
oldboy

cat < oldboy.txt >oldboy.txt.bak

选项D dd if=oldboy.txt of=oldboy.txt.bak

dd用来复制或传输文件的 功能很多
常用格式为

dd if=/dev/zero of=/tmp/1mb bs=1kb count=1000
dd input file从哪里获取数据 output file 写入到哪里 block size 每次读取多少 读取多少次

所以这里的bs*count数量就是每个文件的的大小
这是dd的基础格式
dd if=oldboy.txt of=oldboy.txt.bak 这里并没有假设bs和count默认就是把文件所有内容一直写入直到读取完oldboy.txt文件
所以可以实现备份功能

cat oldboy.txt 
![老男孩教育-标准输出与标准输入.jpg](https://img.haomeiwen.com/i16811697/77ba5a400c7a6b19.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
if=oldboy.txt of=oldboy.txt.bak
cat oldboy.txt.bak 

选项E cat oldboy.txt | cat >oldboy.txt.bak

这里还是以cat oldboy.txt为基础用到管道和重定向符号
|表示把前面命令结果传递给后面命令
专业一点是:管道把前面的命令作为标准输出(前面命令显示信息)通过管道变为后面命令的标准输入

参考: command | command2
The standard output of command is connected via a pipe to the standard input of command2. This connection is performed before any redirections specified by the command .

老男孩教育-标准输出与标准输入.jpg

这里后面还要加上cat 是把前面cat oldboy.txt 标准输入变为输出传递给 oldboy.txt.bak

cat oldboy.txt | cat >oldboy.txt.bak

选项F cat oldboy.txt |tee oldboy.txt.bak

tee用来把前面的输入同时输出到屏幕和写入到文件
tee用法参考:
https://www.jianshu.com/p/941b5735b78e

cat oldboy.txt |tee oldboy.txt.bak

选项G. cp oldboy.txt{,.bak}

这里的{} 是通配符作用是用来生成序列(数字或字母)

先看这个例子
看完这个例子就懂{}如何用来进行备份了。

[root@oldboyedu59 ~]# echo A{B,C}
AB AC
[root@oldboyedu59 ~]# echo A{,C}
A AC
[root@oldboyedu59 ~]# echo oldboy.txt{,.bak}
oldboy.txt oldboy.txt.bak
[root@oldboyedu59 ~]# cp  oldboy.txt{,.bak}

总结:

A和G是实际使用的最多的,当然也可以通过tar打包压缩进行备份
其他的方法是各种命令的技巧熟悉即可
最后:每道题目要多种方法,才能面试的时候获胜.

扫我入群:598972270
上一篇下一篇

猜你喜欢

热点阅读