硬鏈接:硬鏈接與目錄項是同義詞,而且建立硬鏈接有限制,不能給分區建立,不能給目錄建立。
如下 bigfile 文件 Inode: 12849444 Links: 1。
ln bigfile bigfile_link 硬鏈接之後
bigfile : Inode: 12849444 Links: 2
bigfile_link : Inode: 12849444 Links: 2
Links加一,所以硬鏈接就是 目錄項的同義詞,所以用ln 給一個文件做了硬鏈接,本質就是在當前目錄下的目錄文件當中多寫了一行目錄項,該目錄項 用 bigfile_link 文件名 關聯 Inode: 12849444 。即兩個文件名對應同一個 inode。
mhr@ubuntu:~/work/linux/wenjianxitong/20$ stat bigfile
File: 'bigfile'
Size: 5368709120 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 12849444 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ mhr) Gid: ( 1000/ mhr)
Access: 2020-05-04 09:07:52.395872798 -0700
Modify: 2020-05-04 09:04:27.883813275 -0700
Change: 2020-05-04 09:04:27.883813275 -0700
Birth: -
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$ ln bigfile bigfile_link
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$ stat bigfile
File: 'bigfile'
Size: 5368709120 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 12849444 Links: 2
Access: (0600/-rw-------) Uid: ( 1000/ mhr) Gid: ( 1000/ mhr)
Access: 2020-05-04 09:07:52.395872798 -0700
Modify: 2020-05-04 09:04:27.883813275 -0700
Change: 2020-05-05 01:46:59.918698615 -0700
Birth: -
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$ stat bigfile_link
File: 'bigfile_link'
Size: 5368709120 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 12849444 Links: 2
Access: (0600/-rw-------) Uid: ( 1000/ mhr) Gid: ( 1000/ mhr)
Access: 2020-05-04 09:07:52.395872798 -0700
Modify: 2020-05-04 09:04:27.883813275 -0700
Change: 2020-05-05 01:46:59.918698615 -0700
Birth: -
mhr@ubuntu:~/work/linux/wenjianxitong/20$
符號鏈接:符號鏈接的優點是可以跨分區,可以給目錄建立。
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$ ln -s bigfile_link bigfile_s
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$ stat bigfile_link
File: 'bigfile_link'
Size: 5368709120 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 12849444 Links: 2
Access: (0600/-rw-------) Uid: ( 1000/ mhr) Gid: ( 1000/ mhr)
Access: 2020-05-04 09:07:52.395872798 -0700
Modify: 2020-05-04 09:04:27.883813275 -0700
Change: 2020-05-05 01:46:59.918698615 -0700
Birth: -
mhr@ubuntu:~/work/linux/wenjianxitong/20$
mhr@ubuntu:~/work/linux/wenjianxitong/20$ stat bigfile_s
File: 'bigfile_s' -> 'bigfile_link'
Size: 12 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 12847417 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/ mhr) Gid: ( 1000/ mhr)
Access: 2020-05-05 01:58:18.333394043 -0700
Modify: 2020-05-05 01:58:18.201401500 -0700
Change: 2020-05-05 01:58:18.201401500 -0700
Birth: -
mhr@ubuntu:~/work/linux/wenjianxitong/20$
符號鏈接文件的 Size: 12 就是 ‘bigfile_link’ 名的大小,所佔用磁盤空間是0
如果刪除符號鏈接文件指向的文件,源文件失效,再使用該符號鏈接文件,會出錯。
link
命令 ln 是由系統調用 link()封裝來的
NAME
link, linkat - make a new name for a file
SYNOPSIS
#include <unistd.h>
int link(const char *oldpath, const char *newpath);
utime:
NAME
utime, utimes - change file last access and modification times
修改文件最後讀和最後修改時間
SYNOPSIS
#include <sys/types.h>
#include <utime.h>
int utime(const char *filename, const struct utimbuf *times);
目錄的創建和銷燬
NAME
mkdir, mkdirat - create a directory
SYNOPSIS
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
NAME
rmdir - delete a directory
SYNOPSIS
#include <unistd.h>
int rmdir(const char *pathname);
DESCRIPTION
rmdir() deletes a directory, which must be empty. 只能刪除一個空目錄
更改當前工作路徑:cd
NAME
chdir, fchdir - change working directory
SYNOPSIS
#include <unistd.h>
int chdir(const char *path);
int fchdir(int fd);
獲取當前工作路徑 :pwd
NAME
getcwd, getwd, get_current_dir_name - get current working directory
獲取當前工作路徑
SYNOPSIS
#include <unistd.h>
char *getcwd(char *buf, size_t size);