乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【轉(zhuǎn)】linux cp(拷貝命令)ln(鏈接命令)實(shí)質(zhì)區(qū)別之我見(jiàn)

       techres 2012-05-24
      linux cp(拷貝命令)與ln(鏈接命令)實(shí)質(zhì)區(qū)別之我見(jiàn)

              一開(kāi)始自己在網(wǎng)上也查了很多關(guān)于此方面的資料,但是沒(méi)有一個(gè)說(shuō)的能讓人徹底明白,徹底走出迷霧的。今天我將把自己更為清晰的簡(jiǎn)介說(shuō)出來(lái)供大家參考:

              在講這兩個(gè)命令之前,首先要給大家講一下Linux文件系統(tǒng)在磁盤(pán)分區(qū)中是如何存儲(chǔ)一個(gè)文件的。像Windows一樣,我把Linux文件系統(tǒng)存儲(chǔ)文件時(shí)也分為三大塊:inode,dir,data。inode在Linux中對(duì)應(yīng)一個(gè)文件或一個(gè)目錄,它主要是存儲(chǔ)文件的大小、創(chuàng)建時(shí)間、訪問(wèn)時(shí)間、數(shù)據(jù)的存儲(chǔ)位置等一系列信息。下面是Linux為inode定義的數(shù)據(jù)結(jié)構(gòu):

      struct ext3_inode {
      __u16 i_mode;    /* File mode */
      __u16 i_uid;     /* Low 16 bits of Owner Uid */
      __u32 i_size;    /* 文件大小,單位是 byte */
      __u32 i_atime;   /* Access time */
      __u32 i_ctime;   /* Creation time */
      __u32 i_mtime;   /* Modification time */
      __u32 i_dtime;   /* Deletion Time */
      __u16 i_gid;     /* Low 16 bits of Group Id */
      __u16 i_links_count;          /* Links count */
      __u32 i_blocks;               /* blocks 計(jì)數(shù) */
      __u32 i_flags;                /* File flags */
      __u32 l_i_reserved1;          /* 可以忽略 */
      __u32 i_block[EXT3_N_BLOCKS]; /* 一組 block 指針 */
      __u32 i_generation;           /* 可以忽略 */
      __u32 i_file_acl;             /* 可以忽略 */
      __u32 i_dir_acl;              /* 可以忽略 */
      __u32 i_faddr;                /* 可以忽略 */
      __u8 l_i_frag;               /* 可以忽略 */
      __u8 l_i_fsize;              /* 可以忽略 */
      __u16 i_pad1;                 /* 可以忽略 */
      __u16 l_i_uid_high;           /* 可以忽略 */
      __u16 l_i_gid_high;           /* 可以忽略 */
      __u32 l_i_reserved2;          /* 可以忽略 */
      };

      dir是存放文件名和inode ID對(duì)應(yīng)關(guān)系的地方。存儲(chǔ)每個(gè)對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)Linux中定義如下:

      struct ext3_dir_entry_2 {
      __u32 inode;    /* Inode 號(hào)數(shù) */
      __u16 rec_len; /* Directory entry length */
      __u8 name_len; /* Name length */
      __u8 file_type;
      char name[EXT3_NAME_LEN]; /* File name */
      };

      data也就是文件數(shù)據(jù)實(shí)實(shí)在在所存在的地方了。

      那么接下來(lái)開(kāi)始進(jìn)入正題:

      cp(拷貝命令):比如說(shuō)拷貝bing.txt。執(zhí)行"cp bing.txt chuan.txt"拷貝命令時(shí),系統(tǒng)會(huì)產(chǎn)生一個(gè)新inode,把bing.txt相關(guān)的信息填到這個(gè)inode里面。然后把bing.txt的數(shù)據(jù)拷貝到系統(tǒng)為chuan.txt所開(kāi)辟的空間里面。最后,把chuan.txt和新inode ID對(duì)應(yīng)起來(lái)放到dir里面。

      ln(鏈接命令):

      鏈接命令分為兩大塊:軟連接、硬鏈接;

      軟連接(命令格式ln -s file1 file2):系統(tǒng)為file2產(chǎn)生一個(gè)新的inode,把file1的inode信息完全復(fù)制到file2的inode中去。然后在dir里面添加一個(gè)對(duì)應(yīng)關(guān)系:file2 <-----> file2的inode的ID。

      硬鏈接(命令格式:ln [-d] file1 file2): 硬鏈接很簡(jiǎn)單,僅僅是產(chǎn)生一個(gè)file2<----->file1的inodeID 的對(duì)應(yīng)關(guān)系。所以說(shuō)硬鏈接很節(jié)省空間,而且它有一個(gè)很大的好處,那就是可以避免誤刪除帶來(lái)的損失。因?yàn)長(zhǎng)inux中刪除一個(gè)文件時(shí)首先把這個(gè)文件的inode中i_link_count(此變量為硬鏈接數(shù)。為什么沒(méi)有軟連接呢?因?yàn)檐涍B接只是完全復(fù)制源文件的inode的并不公用源文件的inode,他只是相當(dāng)于Windows中的快捷方式而已。)變量的值減一,然后判斷i_link_count是否為0,若是則刪除。否則不會(huì)刪除。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多