もちろんマウントとシンボリックリンクは、全然違う機能なんですが、
ただのマウントではなく、前回使ったmount –bindでのマウントのことです。
前回の記事はこちら
ディレクトリをディレクトリにマウントする
まだまとめ中ですが、Linuxコマンド入門用
中級者のためのLinuxコマンド入門
では、シンボリックリンクから。
ディレクトリaを作成し、aのシンボリックリンクbを作成。
takk@deb9:~/tmp$ ls takk@deb9:~/tmp$ mkdir a takk@deb9:~/tmp$ ln -s a b
ディレクトリaのシンボリックリンク、できました。簡単ですねえ。
lsでの見え方を確認。
takk@deb9:~/tmp$ ls -ld a b drwxr-xr-x 2 takk takk 4096 6月 25 22:42 a lrwxrwxrwx 1 takk takk 1 6月 25 22:42 b -> a takk@deb9:~/tmp$
シンボリックリンクは、lsで見ても、明らかにディレクトリとは異なっています。
サイズも1になってます。
適当なファイルをディレクトリaに作っておきます。
takk@deb9:~/tmp$ echo HELLO >a/file1
中にファイルを作成しても、lsでの見え方は変わりません。
takk@deb9:~/tmp$ ls -ld a b drwxr-xr-x 2 takk takk 4096 6月 25 22:42 a lrwxrwxrwx 1 takk takk 1 6月 25 22:42 b -> a
stat でa bそれぞれ確認。
takk@deb9:~/tmp$ stat a b File: a Size: 4096 Blocks: 8 IO Block: 4096 ディレクトリ Device: 801h/2049d Inode: 800186 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 1000/ takk) Gid: ( 1000/ takk) Access: 2018-06-25 22:42:20.590005001 +0900 Modify: 2018-06-25 22:42:58.702005001 +0900 Change: 2018-06-25 22:42:58.702005001 +0900 Birth: - File: b -> a Size: 1 Blocks: 0 IO Block: 4096 シンボリックリンク Device: 801h/2049d Inode: 547072 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1000/ takk) Gid: ( 1000/ takk) Access: 2018-06-25 22:42:42.686005001 +0900 Modify: 2018-06-25 22:42:39.510005001 +0900 Change: 2018-06-25 22:42:39.510005001 +0900 Birth: - takk@deb9:~/tmp$ ls -l */* -rw-r--r-- 1 takk takk 6 6月 25 22:42 a/file1 -rw-r--r-- 1 takk takk 6 6月 25 22:42 b/file1 takk@deb9:~/tmp$
statも、シンボリックリンクと認識してます。
あと、ファイルを作成したタイミングで、ディレクトリaのタイムスタンプも更新されていますね。
しかし、シンボリックリンクbのタイムスタンプはaに追従するというわけではないようです。
そして、aとbのInodeは別物ですね。
サイズを確認します。
takk@deb9:~/tmp$ du -h 8.0K ./a 12K . takk@deb9:~/tmp$
シンボリックリンクに関しては表示されませんでした。
(辿るには、-Lを指定します)
aとbに格納されているファイルをls。同じファイルが入ってます。
takk@deb9:~/tmp$ ls -l */* -rw-r--r-- 1 takk takk 6 6月 25 22:42 a/file1 -rw-r--r-- 1 takk takk 6 6月 25 22:42 b/file1 takk@deb9:~/tmp$
次に、マウント。先ほど使ったa bは削除して、mount –bindします。
takk@deb9:~/tmp$ rm -rf a b takk@deb9:~/tmp$ mkdir a b takk@deb9:~/tmp$ sudo mount --bind a b
できました。lnほど簡単ではないですが、簡単ですね。
lsの見え方は、
takk@deb9:~/tmp$ ls -ld a b drwxr-xr-x 2 takk takk 4096 6月 25 22:48 a drwxr-xr-x 2 takk takk 4096 6月 25 22:48 b takk@deb9:~/tmp$
本物のディレクトリが2つ並んでいます。
aに適当なファイルを作成。
takk@deb9:~/tmp$ echo HELLO >a/file1
ディレクトリ自体のサイズも変わりません。
takk@deb9:~/tmp$ ls -ld a b drwxr-xr-x 2 takk takk 4096 6月 25 22:49 a drwxr-xr-x 2 takk takk 4096 6月 25 22:49 b takk@deb9:~/tmp$
takk@deb9:~/tmp$ stat a b File: a Size: 4096 Blocks: 8 IO Block: 4096 ディレクトリ Device: 801h/2049d Inode: 800186 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 1000/ takk) Gid: ( 1000/ takk) Access: 2018-06-25 22:16:50.134005001 +0900 Modify: 2018-06-25 22:19:23.606005001 +0900 Change: 2018-06-25 22:19:23.606005001 +0900 Birth: - File: b Size: 4096 Blocks: 8 IO Block: 4096 ディレクトリ Device: 801h/2049d Inode: 800186 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 1000/ takk) Gid: ( 1000/ takk) Access: 2018-06-25 22:16:50.134005001 +0900 Modify: 2018-06-25 22:19:23.606005001 +0900 Change: 2018-06-25 22:19:23.606005001 +0900 Birth: - takk@deb9:~/tmp$
ディレクトリaとbのInodeは同一です。タイムスタンプもa b同期しています。
使用容量を見ると、
takk@deb9:~/tmp$ du -h 8.0K ./a 8.0K ./b 20K . takk@deb9:~/tmp$
両方のサイズが表示されました。
もうすこし大きなサイズのファイルを作成してみます。
takk@deb9:~/tmp$ seq 10000 > a/file2 takk@deb9:~/tmp$ find . ./a ./a/file1 ./a/file2 ./b ./b/file1 ./b/file2 takk@deb9:~/tmp$
使用容量を確認。
takk@deb9:~/tmp$ du -h 56K ./a 56K ./b 116K . takk@deb9:~/tmp$
aとbは同じものなのに、サイズだけ2倍になっています。
duでディスク使用量を確認している場合は、気をつけないといけないですね。
コメント