目录
一、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]...][,...]
其中:
- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- 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。
其他参数说明:
- -c : 若该文件权限确实已经更改,才显示其更改动作
- -f : 若该文件权限无法被更改也不要显示错误讯息
- -v : 显示权限变更的详细资料
- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
- --help : 显示辅助说明
- --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 root@www.wetest.com:/home/root/others/music
scp /home/space/music/1.mp3 root@192.168.172.1:/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/ root@www.wetest.com:/home/root/others/
scp -r /home/space/music/ www.wetest.com:/home/root/others/
上面命令将本地 music 目录复制到远程 others 目录下。
2、从远程复制到本地
只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例:
scp root@www.wetest.com:/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 remote@www.wetest.com:/usr/local/sin.sh /home/administrator
2.使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。