html tool

显示标签为“文件系统,”的博文。显示所有博文
显示标签为“文件系统,”的博文。显示所有博文

2021年3月18日星期四

转: windows软连接

https://blog.csdn.net/qq_37861937/article/details/79064841

1.建立举例


  1. ##建立d:develop链接目录,指向远程的目标服务器上的e盘的对应目录。
  2. mklink /d d:\develop \\138.20.1.141\e$\develop

  3. ##建立d:develop链接目录,指向远程的目标服务器上的e盘的对应目录。
  4. mklink /d d:\recivefiles \\138.20.1.141\e$\recivefiles


2.删除举例

  1. #删除虚拟的链接目录,并不会删除远程文件夹真实文件,注意千万不能用del,del会删除远程的真实文件。
  2. rmdir d:\recivefiles
  3. rmdir d:\develop


3.补充mklink用法



  1. C:\Users\joshua>mklink
  2. Creates a symbolic link.

  3. MKLINK [[/D] | [/H] | [/J]] Link Target

  4.         /D Creates a directory symbolic link. Default is a file symbolic link.
  5.         /H Creates a hard link instead of a symbolic link.
  6.         /J Creates a Directory Junction.
  7.       
  8.         Link specifies the new symbolic link name
  9.         Target specifies the path (relative or absolute) that the new link refers to.

命令格式:mklink /d(定义参数) \MyDocs(链接文件) \Users\User1\Documents(原文件)
/d:建立目录的符号链接符号链接(symbolic link)
/j:建立目录的软链接(联接)(junction)

/h:建立文件的硬链接(hard link)


参考:https://blog.csdn.net/u013187057/article/details/85317661

注意点

  • 亲测只有cmd窗口下才可用,在powershell下不行;
  • 目标路径文件/文件夹必须不存在才可创建

2019年1月28日星期一

转:处理rm -rf 无法删除文件

https://blog.csdn.net/sw_magic/article/details/17380325
http://blog.chinaunix.net/uid-298599-id-2443100.html


通过命令 chattr,可以设置文件/文件夹的隐藏属性,来保证文件/文件夹的安全.其中比较重要的参数为i和a.这两个属性只有root用户才可以设置或清除.而通过命令 lsattr 可以查看这些属性.
i -- immutable
a -- append only

1. 文件的隐藏属性i测试
通过使用参数i,可以保证文件不被删除,重命名,硬链接,也不能被修改.就象把文件"冻"在了原地.下面是一些测试:

1.1 设置文件 test.txt 的隐藏属性

[root@localhost yuechaotian]# pwd
/home/yuechaotian
[root@localhost yuechaotian]# ll
总用量 8
drwx--x--x  3 root        root        4096 12月  7 14:52 study
dr-xr-xr-x  2 yuechaotian yuechaotian 4096 12月  9 22:33 test
-rw-rw-rw-  1 yuechaotian yuechaotian    0 12月  9 22:33 test.txt
[root@localhost yuechaotian]# lsattr test.txt
------------- test.txt
[root@localhost yuechaotian]# chattr +i test.txt
[root@localhost yuechaotian]# lsattr test.txt
----i-------- test.txt 

1.2 test.txt 不能被删除,重命名,硬链接

[root@localhost yuechaotian]# rm test.txt
rm:是否删除有写保护的一般空文件‘test.txt’? y
rm: 无法删除‘test.txt’: 不允许的操作
[root@localhost yuechaotian]# mv test.txt test.txt.copy
mv: 无法移动‘test.txt’至‘test.txt.copy’: 不允许的操作
[root@localhost yuechaotian]# ln test.txt test.txt.ln
ln: 正在创建连至‘test.txt’的硬链接‘test.txt.ln’: 不允许的操作 

1.3 可以被拷贝,新生成的文件并不具有该属性

[root@localhost yuechaotian]# cp test.txt test.txt.copy
[root@localhost yuechaotian]# ll
总用量 16
drwx--x--x  3 root        root        4096 12月  7 14:52 study
dr-xr-xr-x  2 yuechaotian yuechaotian 4096 12月  9 22:33 test
-rw-rw-rw-  1 yuechaotian yuechaotian   29 12月 10 20:27 test.txt
-rw-r--r--  1 root        root          29 12月 10 20:30 test.txt.copy
[root@localhost yuechaotian]# lsattr
----i-------- ./test.txt
------------- ./test
------------- ./study
------------- ./test.txt.copy 

1.4 可以被符号链接

[root@localhost yuechaotian]# ln -s test.txt test.txt.ln
[root@localhost yuechaotian]# ll
总用量 16
drwx--x--x  3 root        root        4096 12月  7 14:52 study
dr-xr-xr-x  2 yuechaotian yuechaotian 4096 12月  9 22:33 test
-rw-rw-rw-  1 yuechaotian yuechaotian   29 12月 10 20:27 test.txt
-rw-r--r--  1 root        root          29 12月 10 20:30 test.txt.copy
lrwxrwxrwx  1 root        root           8 12月 10 20:32 test.txt.ln -> test.txt 

1.5 当使用vi编辑文件 test.txt,并试图保存时,就会出现如下提示:

E45: 'readonly' option is set (add ! to override)  

2. 文件的隐藏属性a测试
a属性与i属性的区别就是:此时文件是可以增加数据的(但不可被删除)

2.1 设置文件 test.txt 的隐藏属性

[root@localhost yuechaotian]# rm test.txt.copy
rm:是否删除一般文件‘test.txt.copy’? y
[root@localhost yuechaotian]# rm test.txt.ln
rm:是否删除符号链接‘test.txt.ln’? y
[root@localhost yuechaotian]# chattr -i +a test.txt
[root@localhost yuechaotian]# lsattr test.txt
-----a------- test.txt 

2.2 与 i 参数不同的是,此时文件 test.txt 是可以写入的:

[root@localhost yuechaotian]# cat test.txt
http://yuechaotian.cublog.cn
[root@localhost yuechaotian]# echo>>test.txt adsf
[root@localhost yuechaotian]# cat test.txt
http://yuechaotian.cublog.cn
adsf 

2.3 同样地,具有隐藏属性a的文件,不能被删除,重命名,以及硬链接

[root@localhost yuechaotian]# rm test.txt
rm:是否删除一般文件‘test.txt’? y
rm: 无法删除‘test.txt’: 不允许的操作
[root@localhost yuechaotian]# mv test.txt test.cp
mv: 无法移动‘test.txt’至‘test.cp’: 不允许的操作
[root@localhost yuechaotian]# ln test.txt test.ln
ln: 正在创建连至‘test.txt’的硬链接‘test.ln’: 不允许的操作 

2.4 而当试图使用 vi 编辑它时,会出现如下提示:

"test.txt" E212: 不能以写入模式打开 

在日常工作中,对于一些不允许修改的配置文件,可以设置其隐藏属性为i;对于日志文件,可以设置其隐藏属性为a.

3. 文件夹的i与a
一样的道理,文件夹中的文件相当于该文件夹的"数据".当文件夹被设置为i或a属性后,该文件夹的"数据"也具有了如上测试中的约束.

3.1 当文件夹具有隐藏属性i时,该文件夹不能被删除,重命名,不能向该文件夹内增加文件,该文件夹的文件也不能被删除.

[root@localhost yuechaotian]# ll
总用量 12
drwx--x--x  3 root        root        4096 12月  7 14:52 study
drwxrwxrwx  2 yuechaotian yuechaotian 4096 12月 10 21:47 test
-rw-rw-rw-  1 yuechaotian yuechaotian   34 12月 10 20:48 test.txt
[root@localhost yuechaotian]# chattr +i test
[root@localhost yuechaotian]# rm -r test
rm:是否进入有写保护的目录‘test’? y
rm:是否删除一般文件‘test/t.2’? y
rm: 无法删除‘test/t.2’: 权限不够
[root@localhost yuechaotian]# mv test t
mv: 无法移动‘test’至‘t’: 不允许的操作
[root@localhost yuechaotian]# mv test.txt test
mv: 无法移动‘test.txt’至‘test/test.txt’: 权限不够
[root@localhost yuechaotian]# rm test/t.2
rm:是否删除一般文件‘test/t.2’? y
rm: 无法删除‘test/t.2’: 权限不够 

3.2 当文件夹具有隐藏属性a时,与i不同的是:可以向该文件夹内增加文件

[root@localhost yuechaotian]# chattr -i +a test
[root@localhost yuechaotian]# mv test.txt test
[root@localhost yuechaotian]# rm test/test.txt
rm:是否删除一般文件‘test/test.txt’? y
rm: 无法删除‘test/test.txt’: 不允许的操作


chattr
  
  1.作用
  
  修改ext2和ext3文件系统属性(attribute),使用权限超级用户。
  
  2.格式
  
  chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录
  
  3.主要参数
  
  -R:递归处理所有的文件及子目录。
  
  -V:详细显示修改内容,并打印输出。
  
  -:失效属性。
  
  +:激活属性。
  
  = :指定属性。
  
  A:Atime,告诉系统不要修改对这个文件的最后访问时间。
  
  S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
  
  a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
  
  i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
  
  D:检查压缩文件中的错误。
  
  d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。
  
  C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
  
  :Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。
  
  u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
  
  4.说明
  
  chattr 命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

2018年9月18日星期二

稀疏文件-sparse file


稀疏文件-sparse file

定义:
https://zh.wikipedia.org/wiki/%E7%A8%80%E7%96%8F%E6%96%87%E4%BB%B6
稀疏文件(英语:sparse file)是一种计算机文件,它能尝试在文件内容大多为空时更有效率地使用文件系统的空间。它的原理是以简短的信息(元数据)表示空数据块,而不是在在磁盘上占用实际空间来存储空数据块。只有真实(非空)的数据块会按原样写入磁盘。

在读取稀疏文件时,文件系统会按元数据在运行时将这些透明转换为“真实”的数据块,即填充为零。应用程序不会察觉这个转换。

大多数现代的文件系统支持稀疏文件,包括大多数Unix变种和NTFS。[1]苹果的HFS+不提供稀疏文件支持,但在OS X中,虚拟文件系统层支持在任何受支持文件系统中存储稀疏文件,包括HFS+。2016年6月在WWDC宣布的苹果文件系统(APFS[2])支持稀疏文件。稀疏文件常被用在磁盘映像、数据库快照、日志文件和科学应用中。

支持的系统:
https://blog.csdn.net/cymm_liu/article/details/8760033
根据这里应该是windows的ntfs 和 linux都可以的

注意问题:
PS:
这样,会产生一个问题,文件已被创建了,但相应的磁盘空间并未被分配,只有在有真正的数据插入进来时,才会被分配磁盘块,如果这时文件系统被占满了,那么对该文件的写操作就会失败。为防止这种情况,有两种办法:不产生稀疏文件或为稀疏文件留够空间。
在计算机科学方面,稀疏文件是文件系统中的一种文件存储方式,在创建一个文件的时候,就预先分配了文件需要的连续存储空间,其空间内部大多都还未被数据填充现在有很多文件系统都支持稀疏文件,包括大部分的Unix和NTFS 。
稀疏文件被普遍用来磁盘图像,数据库快照,日志文件,还有其他科学运用上。


在UNIX文件操作中,文件位移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将延长该文件,并在文件中构成一个空洞。位于文件中但没有写过的字节都被设为0。
如果offset 比文件的当前长度更大,下一个写操作就会把文件“撑大(extend)” 在文件里创造“空洞(hole)”。没有被实际写入文件的所有字节由重复的0 表示。空洞是否占用硬盘空间是由文件系统(file system)决定的。


实验:
https://blog.csdn.net/cymm_liu/article/details/8760033
下面是稀疏文件的创建与查看
[root@localhost ~]# dd if=/dev/zero of=sparse-file bs=1 count=1 seek=1024k
[root@localhost ~]# ls -l sparse-file
-rw-r--r-- 1 root root 1048577 Oct 15 17:50 sparse-file
[root@localhost ~]# du -sh sparse-file
8.0K sparse-file

[popexizhi:
ls /du 的-sh都是查看磁盘占用的大小
ls -lh 是查看文件本身的大小
]
[root@lijie-120 hole_file]# ls -s sparse-file
4 sparse-file
[root@lijie-120 hole_file]# ls -sh sparse-file
4.0K sparse-file
[root@lijie-120 hole_file]# du -sh *
4.0K sparse-file
[root@lijie-120 hole_file]# ls -lh sparse-file
-rw-r--r--. 1 root root 1.1M 9月  19 09:46 sparse-file

查看文件的inode
http://blog.51cto.com/dmwing/1831882
--- 查看文件的inode,使用ls -i
[root@lijie-120 hole_file]# ls -i *
150830 sparse-file

--- 查看文件的inode,也可以使用命令stat
[root@lijie-120 hole_file]# stat sparse-file
  文件:"sparse-file"
  大小:1048577    块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:150830      硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-09-19 09:46:35.489872134 +0800
最近更改:2018-09-19 09:46:35.489872134 +0800
最近改动:2018-09-19 09:46:35.489872134 +0800
创建时间:-
[root@lijie-120 hole_file]# du -sh sparse-file
4.0K sparse-file



2017年10月30日星期一

文件系统-笔记


裸IO与直接IO的区别



裸IO 绕过了文件系统存数据, 直接IO只是绕过了缓冲使用文件系统(比同步写少了 O_SYNV的保护)。


写时复制与原子操作





写时复制的步骤是,写新块完成后,替换旧块到空闲列表中;

保证了文件系统的宕机时的文件完整性,把随机写改成了连续写从而改善了写的性能,这个是伴随文件系统日志产生的。


从逻辑IO到物理IO被放大的例子和原因






fsync 对比O_SYNC的优势






文件系统延时的测量位置, 只要为如下几个,应用程序,系统调用接口,VFS, 直接在文件系统上,对应上文中的,
文件系统延时消耗在文件系统,内核磁盘I/O子系统(包含VFS和系统调用接口) 和等待磁盘设备

 

对用测量延时的几个参数的主要
对应缓存命中率大于99%的文件系统,单位时间平均值会被缓存命中率淹没,而高延时为离散点,要配合全分布和单操作的延时来查看,这个和测量过程中的其他值是一样的查找过程,但是后期不是忽略而是进一步研究。

非阻塞IO



这里的例子是web server的stat() 查看文件,确保了文件在缓存中没有修改。
这里的使用应该多是读取吧?!因为写操作的在文件系统默认就是非同步的,如果需要同步写要使用O_SYNC标准的,使用强制同步写的。原文中提到使用非阻塞IO的目的是对多线程程序节省了创建多余线程的成本,这个还真没有考虑过,这么精细的使用线程,感觉都想实时嵌入式的使用方式了。