【Linux】常用命令之ln、chmod、scp

目录

 

一、ln 建立软/硬链接

二、chmod 修改文件或目录的权限

三、scp 不同linux系统之间复制文件和目录


一、ln 建立软/硬链接

它的功能是为某一个文件在另外一个位置建立一个同步的链接。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

1、命令

ln [参数][源文件或目录][目标文件或目录]

ln 源文件名 链接名 -----为源文件建立一个硬链接

ln -s 源文件/目录名 链接名-------为源文件或目录建立一个软链接

2、软链接 和 硬链接的区别

软链接:

  • 以路径的形式存在,其中存储源文件的路径,类似于Windows操作系统中的快捷方式
  • 可以 跨文件系统 ,硬链接不可以
  • 可以对一个不存在的文件名进行链接
  • 可以对目录进行链接

硬链接:

  • 以文件副本的形式存在,保存的是实际数据块的inode号,不占用实际空间。
  • 不允许给目录创建硬链接
  • 只能在同一个文件系统中创建

不论是硬链接或软链接都不会将原本的档案内容复制一份,只会占用非常少量的磁碟空间。

3、原理

在linux系统下一切皆文件,目录它也是一个文件,只不过在它里面存储的是一张表的文件。

而节点就类似编程语言中数组的下标,我们可以把每个文件都看成是数组中的元素,而知道了节点号,就可以找到实质的文件内容了。

硬链接(hard link):

文件A是文件B的硬链接,则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。

注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。只删除一个连接并不影响节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软链接(soft link):

A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

 

二、chmod 修改文件或目录的权限

Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。

命令语法: chmod [options] mode file...

1、参数说明

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:

  1. u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  2. + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  3. r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

此外,chmod也可以用数字来表示权限 :

语法为:

chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4,w=2,x=1

  • 若要rwx属性则4+2+1=7;
  • 若要rw-属性则4+2=6;
  • 若要r-x属性则4+1=5。

其他参数说明:

  1. -c : 若该文件权限确实已经更改,才显示其更改动作
  2. -f : 若该文件权限无法被更改也不要显示错误讯息
  3. -v : 显示权限变更的详细资料
  4. -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
  5. --help : 显示辅助说明
  6. --version : 显示版本

2、实例

(1)将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

或 chmod 744 file1.txt

或 chmod a+r file1.txt

(2)将文件 file1.txt 与 file2.txt 设为该文件拥有者、与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

或 chmod 774 file1.txt file2.txt

(3)将 ex1.py 设定为只有该文件拥有者可以执行 :

chmod u+x ex1.py

或 chmod 544/744 ex1.py

(4)将当前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *

或 chmod -R 744/544/644 *

(5)chmod a=rwx file

和 chmod 777 file 效果相同

(6)chmod ug=rwx,o=x file

和 chmod 771 file 效果相同

(7)若用chmod 4755 filename可使此程序具有root的权限

三、scp 不同linux系统之间复制文件和目录

scp(secure copy),是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。

scp [可选参数] file_source file_target

1、从本地复制到远程

     复制文件的命令格式:

scp local_file remote_username@remote_ip:remote_folder

或者 scp local_file remote_username@remote_ip:remote_file

或者 scp local_file remote_ip:remote_folder

或者 scp local_file remote_ip:remote_file

  • 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
  • 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

应用实例:

scp /home/space/music/1.mp3 [email protected]:/home/root/others/music

scp /home/space/music/1.mp3 [email protected]:/home/root/others/music/001.mp3

scp /home/space/music/1.mp3 www.wetest.com:/home/root/others/music

scp /home/space/music/1.mp3 192.168.172.1:/home/root/others/music/001.mp3

    复制目录的命令格式,-r:

scp -r local_folder remote_username@remote_ip:remote_folder

或者 scp -r local_folder remote_ip:remote_folder

  • 第1个指定了用户名,命令执行后需要再输入密码;
  • 第2个没有指定用户名,命令执行后需要输入用户名和密码;

应用实例:

scp -r /home/space/music/ [email protected]:/home/root/others/

scp -r /home/space/music/ www.wetest.com:/home/root/others/

上面命令将本地 music 目录复制到远程 others 目录下。

2、从远程复制到本地

只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例:

scp [email protected]:/home/root/others/music /home/space/music/1.mp3

scp -r www.wetest.com:/home/root/others/ /home/space/music/

说明

1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:

#scp 命令使用端口号 4588

scp -P 4588 [email protected]:/usr/local/sin.sh /home/administrator

2.使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。

猜你喜欢

转载自blog.csdn.net/lijing742180/article/details/83268309