红帽linux命令大全及解析

RHEL7.0
多用户多任务的操作系统
一切皆文件
用多个简单的命令来解决一个复杂的任务
Fedora

wine


vmware+xshell
FAT


RH124 RH134 RHCSA 红帽认证系统管理员 2.5H
RH254 RHCE 红帽认证系统工程师 4H



linux文件系统是一棵倒置的单根系的树形结构:
/ 文件系统的入口,最高一级目录;
/bin:基础系统所需要的命令位于此目录,是最小系统所需要的命令,如:ls, cp, mkdir等。
这个目录中的文件都是可执行的,一般的用户都可以使用。
(c语言写的程序,经过编译器编译后的程序)
/sbib:大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,
普通用户无权限执行这个目录下的命令;

/boot 包含Linux内核及系统引导程序所需要的文件,比如 vmlinuz initrd.img
文件都位于这个目录中。
/dev 设备文件存储目录,比如声卡、磁盘... ... 是Linux文件系统的一个闪亮的特性 -所有对象都是文件或目录。

/root Linux超级权限用户root的家目录;
/home 普通用户默认存放目录 Linux 是多用户环境,所以每一个用户都有一个只有自己可以访问的目录
(当然管理员也可以访问)。它们以 /home/username 的方式存在。

/etc 存放系统程序或者一般工具的配置文件。
/var 这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,
/var下有/var/log 这是用来存放系统日志的目录。
/tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。 /tmp就用来存放临时文件的。
/var/tmp目录和这个目录相似。许多程序在这里建立lock文件和存储临时数据。
有些系统会在启动或关机时清空此目录。

/lost+found 在ext2或ext3、ext4文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。
当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。 有时系统发生问题,
有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
/mnt 这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。有时我们可以把让系统开机自动
挂载文件系统,把挂载点放在这里也是可以的。比如光驱可以挂载到/mnt/cdrom 。
/net、/misc 、 /srv
/media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录 ;
CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,类似cdrom 的目录。这个只有在最新的发行套件上才有

/opt 表示的是可选择的意思,有些

软件包也会被安装在这里,也就是自定义软件包
有些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件
/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。
/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。这是系统中极为特殊的一个目录,
实际上任何分区上都不存在这个目录。它实际是个实时的、驻留在内存中的文件系统。
/sys 操作系统运行时,本机的各类信息记录在这个目录下,也是一个虚拟文件系统


/lib 库文件存放目录这里包含了系统程序所需要的所有共享库文件,类似于 Windows 的共享库 DLL 文件。
/lib64 64bit的共享库文件

/usr 这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。
当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。
/cgroup 系统资源分配的配置目录

/selinux 安全性增强Linux,是一个存放selinux策略的目录,虚拟文件系统

命令:
终端分为:虚拟终端和本地tty终端
图形下开启的终端、远程工具发起的连接窗口都是虚拟终端
从图形界面切换到终端: CTRL-ALT-F2`6
物理终端之间切换: ALT-F2`6
从物理终端回到图形: ALT-F1 OR ALT-F7
tty 显示所在的终端名称

终端提示符:
[root@host ~]#

[当前登录账号名称@当前登录的主机名称的短写 用户当前所在目录]当前登录的用户身份
#表示是超级管理员root
$表示是普通系统用户

whoami 查看当前登录的用户名称
hostname -s 当前主机名的短写
hostname 完整的主机名
pwd 当前所在的工作目录


关机命令:
poweroff
halt
shutdown -h now
init 0
重启命令:
reboot
shutdown -r now
init 6

[root@host ~]# makewhatis -U 更新whatis数据库
[root@host ~]# whatis xxx 查询某个命令的功能

命令 选项... 参数...
<>
[]
a|b -a|-b
-abc
; 命令1;命令2 多条命令分别执行,相互之间没有影响
ctrl-c 终止命令的执行
\ 命令强制换行,或者是脱意字符
"" 双引号中间的内容是一个整体字符串,特殊字符仍然具有特殊含义
‘‘ 单引号中间的内容是一个整体字符串,所有特殊字符都失去特殊含义
·· 反单引号表示里面的命令执行完毕,会替换目标位置的字符串
$() -----

基本操作命令:
一、
cd change

the working directory
cd /usr/share/doc
cd ~
cd -
cd ..
cd

路径:相对路径和绝对路径

写shell脚本时必须是绝对路径,日常操作可以使用相对路径
绝对路径的路径名都是以/开头
相对路径的路径名都不是/开头


二、
ls list directory contents
-a 列出所有文件,包括隐藏的
-l 列出文件的详细信息
drwxr-xr-x. 2 root root 4096 Sep 27 15:36 dir1
-rw-r--r--. 1 root root 0 Sep 27 15:36 file1
第一列,第一个字符:文件类型:
d 目录
- 普通文件
l 链接文件
b 块设备文件
c 字符设备文件
p 管道文件
s socket文件
第一列,2-10字符,代表文件权限,其中,九位字符中,每三个一段,分三段
第一段三位,表示文件所有者的权限
第二段三位,表示文件所属组的权限
第三段三位,表示其他人具有的权限

第三列,数字表示文件的数量
第四列,文件所属用户的用户名称
第五列,表示文件所属分组的分组名称
第六列,表示文件大小
最后一列,表示文件名称
在其中最后一列和第六列之间的内容,表示文件的修改或者创建日期

通过颜色判断文件类型:
灰白色:普通文件
蓝色: 目录
红色: 压缩包
粉红色:socket文件
黄色: 设备文件
暗黄色: 管道文件
浅蓝色:链接文件
通过命令判断文件类型:file

-d 指明查看的对象是目录本身
-R 递归显示文件内容
三、
mkdir create a directory
-p 递归创建目录
mkdir dir1
mkdir dir2 dir3 dir4
mkdir test_{1,2,3,4}
mkdir -p dir1/dir2/dir3/dir4/dir5/dir6

四、
touch create empty file

五、
rm remove files or directories
-r 递归删除目录
-f 强制删除,不交互
rm -r dir2
rm -rf dir1
rm -rf dir1/dir2/dir3
rm -f file1
\rm file2

六、
cp copy files and directories
-r 递归复制

复制单个文件或者目录
1. cp file1 file2
2. cp -r dir1 dir2

复制多个文件或者目录
cp -r file* test* dir* dst/

把文件或者目录复制到目标位置并且重命名
cp file /dst/new_file
cp -r dir2 dir1/new_dir

从远程往本地复制文件或目录
cp /root/install.log .
cp -r /home .
cp /root/install.log /tmp/test/install.log.2
cp /root/install.log ./install.log.3
cp -r /home ./home.1

从本地往远程复制
cp -r file1 home /tmp
cp -r home.1 install.log* ../

七、
mv move (rename) files

重命名:
mv test test3
mv home home.2

剪切:
1.从本地到远程剪切
mv test1 /var/tmp/
mv home.1/ /var/tmp/
2.从远程到本地剪切
mv test1 /var/tmp/
mv /var/tmp/home.1 .
剪切并且重命名:
mv test1 /var/tmp/test_hello
mv home.1 /var/tmp/home_hello
。。。。。

day3
vim 文本编辑器

cat 读取文本文件内容
nano 、gedit(图形)
vi 、gvim(图形)

insert|i 光标之前插入
I 光标所在行的行首插入
a 光标之后插入
A 光标所在行的行末插入
o 在光标所在行下面新插入一行
O 在光标所在行上面新插入一行
s 删除光标所在位置的单个字符,并进入插入模式
S 删除光标所在位置的整行字符,并进入插入模式

普通模式下
u 撤销
ctrl-r 反撤销
ctrl-g 显示被vim编辑文本文件的信息
ZZ 保存并退出
G 定位文件末尾行
gg 定位文件的首行
^ Home 定位光标所在行的行首
$ End 定位光标所在行的行尾
5h 左移五个字符
5l 右五个字符
5j 下移五行
5k 上移五行
5yy 复制光标所在行向下连续五行
5dd 删除光标所在行向下连续五行
p(小写) 粘贴缓冲区的内容到光标所在行的下一行
P(大写) 粘贴缓冲区的内容到光标所在行的上一行
dG 删除光标当前到文件末尾处的内容
dgg 删除光标当前到文件行首处的内容
d$ 删除光标位置到行尾的所有内容
d^ 删除光标位置到行首的所有内容
30G 直接定位文件的第30行
r 替换光标所在处的一个字符
R 替换光标所在处往后的一段内容

ctrl-w,s 水平分割窗体显示文件内容
ctrl-w,v 垂直分割窗体显示文件内容
ctrl-w,h|j|k|l 左、下、上、右移动光标焦点在多个窗口中

v 光标经过的字符被选择
V 光标经过的行被选择
ctrl-v 光标经过的选择部分是一个矩形
ctrl-v,I,输入# 在被选择的行首加入#号注释
ctrl-v,delete 删除选择的内容
ctrl-v,y 复制选择的内容
ctrl-v,d 删除选择的内容
尾行模式
w 保存
q 退出
wq 保存并退出
q! 放弃修改退出
w! 强制保存
wq!强制保存并退出
x 保存并退出
e! 撤销文件到刚打开的状态,不会退出当前编辑的文件
set nu
set nonu
set ai
set noai
set hlsearch
set nohls
:50 直接定位第50行
:w NewfileName 当前文件另存为
:n1,n2 w Newfile 从n1到n2的连续内容另存为
:!command 不退出当前vim编辑的文件,直接执行系

统中的命令
:n1 !cat /tmp/test.txt 把cat读取的内容直接覆盖到指定行号上
:r /tmp/test.txt 把cat读取的内容直接覆盖到指定行号上

/keyword 搜索指定的内容
搜索到指定的内容后n下一个关键字,N上一个关键字
?keyword 搜索指定的内容
搜索到指定的内容后N下一个关键字,n上一个关键字

:%s/ext4/xfs/g 在整个文件中搜索ext4,并把搜到所有的内容,都替换成xfs
:%s/ext4/xfs/gi 在整个文件中搜索ext4(忽略大小写),并把搜到所有的内容,都替换成xfs
:%s/ext4/xfs/ 每一行上面只进行一次替换
:n1,n2 s/ext4/xfs/g 在从n1到n2之间搜索到的内容全部替换


获取帮助:

自学:鸟哥私房菜(服务器版+基础版) 、视频

故障解决:网络搜索(google+百度)突发性

论坛 常规学习、拓展

使用中(无网络):
系统自带 F1
系统----->文档
firefox file:///usr/share/doc
makewhatis -U ---->whatis---> command --help|-h ----->man command ----->info or pinfo


history
history -c
history -w
history -r


day4:
Redirecting Output to a File or Program
0 Standard input
1 standard output
2 standard error
& standard output and standard error

su - student
[student@demo ~]$ find /etc -name passwd 1>find.txt
[student@demo ~]$ find /etc -name passwd 2>err.txt

覆盖重定向 >
追加重定向 >>

输入重定向 <
输入终止符 <<

Constructing pipelines: |
command1 | command2 | command3
https://www.360docs.net/doc/6c9383839.html,mand1必须能够产生输出
https://www.360docs.net/doc/6c9383839.html,mand2必须能够接受输入
3.错误不能通过管道传递

tee


write username ttyname
wall messages
mesg y|n





用户管理:

account 用户名 ID userID UID
student --- uid

超级用户 root UID=0
系统账号 运行程序用 1=< UID =<499
普通账号 管理系统用 UID > 500


账号信息:/etc/passwd
一行是一条账号信息,不允许重复,不允许有空白行
account:password:UID:GID:GECOS:Home directory:shell
root: x : 0 : 0 : root: /root : /bin/bash


密码信息:/etc/shadow

man shadow:
root:$1$OqhA/FYh$GStXMa2A2CGdKSYwe5CbI1:16355:0:99999:7:::



添加用户的时候,系统会创建同名分组作为该用户的私有组
用户名和组名称相同,uid和gid尽可能相同












group 组名称 ID groupID GID
student --- gid

超级用户组 GID=0
系统组 1=< GID =<499
普通组 GID > 500

/etc/group 分组信息

group_name:password:GID:user_list



/etc/gshadow 分组密

码信息

group name:encrypted password:administrators:members


groupadd -r -g
groupmod -g -n
groupdel 删除的时候不能是某个用户的主组

newgrp 临时切换用户的主组
gpasswd

umask

常规文件最大权限666 目录最大权限777
root用户创建出来文件默认权限644,目录默认权限755
022
rwxrwxrwx rw-rw-rw-
- ----w--w- - ----w--w-
rwxr-xr-x rw-r--r--






文件特殊权限:suid sgid sbit

suid:
当一个可执行的二进制文件具有suid的权限时,执行该文件的用户的有效身份,在程序的运行
期间会临时获得该程序拥有者的权限
有效设置对象:只能可执行的二进制文件

sgid:
1.当一个可执行的二进制文件具有sgid的权限时,执行该文件的用户的有效组,在程序的运行
期间会临时获得该程序拥有组的权限
2.当一个目录具有sgid权限时,在该目录下新建的项目所属的组名称,是从起父目录继承
有效设置对象:可执行的二进制文件、或者是目录

sbit:
当一个目录具有sbit权限时,在该目录下只有文件拥有者才能删除属于自己的文件
有效设置对象:目录

chmod u+s
g+s
o+t
suid 4
sgid 2
sbit 1
chmod 5755


文本处理命令:
cat 、 more 、 less
head 、tail

grep(行)
cut (列)
sort 排序
uniq 删除重复行

col
cat -A filename | tr '$' '\r' > file_new.test
把linux下回车符换成windows下回车符
unix2dos filename 把linux文件格式转成windows文件格式
delete_file.txt里包含f1.txt f2.txt f3.txt
cat delete_file.txt |xargs rm -rf
xargs功能:把来自于其他的输出结果转给另外一个命令作为
改命令的一个参数



例一:将 /etc/passwd 的内容列出并且打印行号,同时,请将第 2~5 行删除
# nl /etc/passwd | sed '2,5d'
sed 的动作为 '2,5d' ,那个 d 就是删除,sed 后面接的动作,请务必以 '' 两个单引号括住
如果只要删除第 2 行,可以使用『 nl /etc/passwd | sed '2d' 』来达成,
至于若是要删除第 3 到最后一行,则是『 nl /etc/passwd | sed '3,$d' 』的,
那个钱字号『 $ 』代表最后一行


例二:承上题,在第二行后(亦即是加在第三行)加上『drink tea?』
nl /etc/passwd | sed '2a drink tea'
在 a 后面加上的字符串就已将出现在第二行后面啰!那如果是要在第二行前呢?
『 nl /etc/passwd | sed '2i drink tea' 』
就是将『 a 』变成『 i 』即可。 增加一行很简单,那如果是要增将两行以上呢?


例三:在第二行后面加入两行字,例如『Drink tea or .....』与『drink beer?』
# nl /etc/passwd | sed '2a Drink tea or ......\
> drink beer ?'
重点是『我们可以新增不只一行喔!可以新增好几行』但是每一行之间都必须要以反

斜线『 \ 』来进行新行的增加


例四:我想将第2-5行的内容取代成为『No 2-5 number』
# nl /etc/passwd | sed '2,5c No 2-5 number'


例五:仅列出 /etc/passwd 档案内的第 5-7 行
# nl /etc/passwd | sed -n '5,7p'
上述的指令中有个重要的选项『 -n 』,按照说明文件,这个 -n 代表的是『安静模式』! 那么为什么要使用安静模式呢?
你可以自行下达 sed '5,7p' 就知道了 (5-7 行会重复输出)! 有没有加上 -n 的参数时,输出的数据可是差很多


部分数据的搜寻并取代的功能
除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的搜寻并取代的功能
基本上 sed 的搜寻与取代的与 vi 相当的类似!他有点像这样:

sed 's/要被取代的字符串/新的字符串/g'


例六:利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
sed -i 's/\.$/\!/g' regular_express.txt

sed -i.bak



man useradd |col -bx > useradd.txt
enscript -o useradd.ps useradd.txt
ps2pdf useradd.ps useradd.pdf
evince useradd.pdf


文件搜索、查找:
find、which、locate、whereis

whereis 二进制、源码、man手册
locate 只要包含搜索的关键字,都会被显示出来
依赖于数据库/var/lib/mlocate,使用之前最好用updatedb更新数据库
注意:它不会去临时目录下搜索
which 二进制 去系统指定的PATH下搜索,并显示所有搜索到的结果
find 不依赖于数据库,遍历(递归)搜索方式

1.按照名称搜索
find -name https://www.360docs.net/doc/6c9383839.html, 不指定目录,默认是在当前目录下搜索
find /path -name https://www.360docs.net/doc/6c9383839.html,
find /path -name file\*
2.用户或者分组名称搜索
find / -user student -ls 2>/dev/null
find / -group student -ls 2>/dev/null
find / -nouser -nogroup
注意:如果搜索条件中没有运算符表示各个条件都要满足
-a -o -not
find / -user student -group student -ls 2>/dev/null
find / \( -user user1 -o -user user2 \) 2>/dev/null -exec ls -ld {} \;
find / \( -user user1 -o -user user2 \) 2>/dev/null -ls
find / -not \( -user user1 -o -user user2 \) 2>/dev/null -ls

3.按照uid或者gid进行搜索
find / -uid 500
find / -gid 501
4.按照文件类型进行搜索
find /var -type p
d 目录
- 普通文件
l 链接文件
b 块设备文件
c 字符设备文件
p 管道文件
s socket文件
f 文件
5.按照文件时间查找
stat 显示文件的详细时间信息
stat filename

时间类型:

atime --- Access 文件被读取时的时间戳
ctime --- Change 文件权限被修改时的时间戳chmod、chgrp、chown
mtime --- Modify 文件内容被修改事的时间戳,但同时会影响atime和ctime

find /var -mtime +4
find /etc/ -ctime 4

6.按照文件的大小搜索
dd if=/dev/zero of=test1 bs=1K count=80
find /tmp/test/ -size 80k 查找仅仅等于指定大小的文件
find /tmp/test/ -size -80k 小于指定size的文件
find /tmp/test/ -size +80k 大于

7.按照文件的权限搜索
find -perm 644 -ls 仅查找权限是644的文件
find -perm +644 -ls u/g/o权限位上的任意一部分权限满足指定搜索条件就会显示出来
find -perm -644 u/g/o权限位上的权限全部同时满足指定搜索条件才会显示出来
搜索时的权限0表示不比对指定位置的权限:

附加动作:
-exec
-ok
find / -perm -6000 -ok cp {} /root/find.sgid \;

归档工具:tar
tar命令选项
-c 创建归档包
-x 解开归档包
-v 显示整个过程的详细信息
-f 操作对象是一个文件(tar命令必须的一个参数)
-t 查看tar包文件内容
-r 往一个tar包中添加新的文件
--delete 从tar包中删除指定文件
-C 指明解压路径
-z 调用gzip工具进行压缩或者解压缩
-j 调用bzip2工具进行压缩或者解压缩

tar -cvf
tar -xvf

tar -zcvf
tar -zxvf

tar -jcvf
tar -jxvf

tar -Jcvf
tar -Jxvf

compress------uncompress *.Z zcat
zip----unzip *.zip zcat
gzip---gunzip *.gz zcat
bzip2---bunzip2 *.bz2 bzcat

.rar

软件管理:
tar rpm yum
tar:
./configure
make
make install



rpm: QQ2014.exe
zsh-4.3.10-4.1.el6.x86_64.rpm
安装包名称
软件包名称-开发版本-release版本-平台.格式

要求:安装、卸载、升级、查询
rpm
-ivh 使用安装包名称,显示详细的安装进度信息
rpm -ivh ftp://192.168.0.254/pub/rhel6/dvd/Packages/zsh-4.3.10-4.1.el6.x86_64.rpm
rpm -ivh http://192.168.0.254/pub/rhel6/dvd/Packages/zsh-4.3.10-4.1.el6.x86_64.rpm

-e(卸载) 使用软件包名称
-F(升级) Flash,需要低版本软件存在
-U(升级) 不需要低版本软件

rpm已安装软件信息记录的数据库:/var/lib/rpm
-q 去数据库中查询

指定的软件是否安装,需要明确指定的是软件包名称
-qa 列出系统中所有软件已经安装的软件信息,然后配合grep在已知结果中搜索指定信息

-ql 查询软件包安装后会产生哪些文件
-qf 查找某个文件是由哪个软件安装后产生的
-qi 显示系统中某个安装过软件的软件信息

-qip 显示某个指定安装包的软件信息(尚未安装)
-qlp 列出摸个指定安装包包含的文件信息(尚未安装)
--scripts 查询软件包中的脚本内容

-Vf 去rpm数据库中对比指定的文件在安装之后是否发生了改变
-Vp 用软件包去校验系统中释放的文件是否被修改
-K 校验指定的软件的签名是否被假冒

yum
yum服务器提供软件下载服务
yum客户端,通过配置文件找到yum服务器并下载软件

setp1: /etc/yum.repos.d
XXX.repo
[basename]
name=XXXXXX
baseurl=http://192.168.0.254/pub/rhel6/dvd
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
setp2:
yum clean all
yum makecache
yum list
yum install
yum reinstall
yum remove
yum search

yum grouplist
yum groupinstall
yum groupremove


进程管理、crontab at lftp、ftp、wget/sftp


计划任务
at 一次性计划任务,无规律,突发性任务
crontab 周期性计划任务,有规律


atd 守护进程 每分钟检查一次工作计划
at 执行具体计划任务的主程序,管理
/var/spool/at 计划任务配置文件
/etc/at.deny at计划任务的访问控制文件
/etc/at.allow(默认是不存在的)


at访问控制:

1.仅有at.deny 用户在黑名单中, 不能执行
用户不在黑名单中,能执行
2.仅有at.allow 用户在白名单中,能执行
用户不在白名单中,不能执行

3.两个文件都存在,用户都出现,能执行
用户都没出现,不能执行
4.两个文件都不存在,用户不能执行

5.两个文件都存在,用户仅出现在黑名单中,不能执行
用户仅出现在白名单中,能执行


service atd stop
start
systemctl restart atd


at -l
at -c num_job
at -d num_job


crontab:
crond 守护进程 每分钟检查一次工作计划
crontab 执行具体计划任务的主程序,管理
/var/spool/cron 计划任务配置文件
/etc/cron.deny at计划任务的访问控制文件
/etc/cron.allow(默认是不存在的)


cron访问控制:

1.仅有cron.deny 用户在黑名单中, 不能执行
用户不在黑名单中,能执行
2.仅有cron.allow 用户在白名单中,能执行

用户不在白名单中,不能执行

3.两个文件都存在,用户都出现,能执行
用户都没出现,不能执行
4.两个文件都不存在,用户不能执行

5.两个文件都存在,用户仅出现在黑名单中,不能执行
用户仅出现在白名单中,能执行

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed

29 16 * * * command
* 16 * * *
*/5 16 * * *
1-10 16 * * *
3,7,21 * * * *
3,7,21,25-30 * * * *
10-20/2 * * * *

crontab -e [-u username]
crontab -l [-u username]
crontab -r [-u username]

service crond restart





crontab ps kill killall top


ssh scp rsync

ssh+cp























相关文档
最新文档