Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今いるディレクトリを消すとどうなる

 今いるディレクトリを消すとどうなる

「新しいLinuxの教科書」を読む会 オンライン #11 での発表資料です。
https://linuxbook.connpass.com/event/204816/

Osumi, Yusuke

March 13, 2021
Tweet

More Decks by Osumi, Yusuke

Other Decks in Technology

Transcript

  1. 今いるディレクトリを
    消すとどうなる
    @ozuma5119
    1
    「新しいLinuxの教科書」を読む会 オンライン #11 2021/03/13

    View Slide

  2. Windowsの場合 - できない
    2

    View Slide

  3. Linuxの場合 - できる
    3
    $ ls
    book1.csv secret.txt
    $ pwd
    /home/book/Documents
    $ rm -v -r /home/book/Documents
    `/home/book/Documents/secret.txt' を削除しました
    `/home/book/Documents/book1.csv' を削除しました
    ディレクトリを削除しました: `/home/book/Documents'
    $ pwd
    /home/book/Documents

    View Slide

  4. 4
    "Documents" フォルダは消えたのにいる!
    *いしのなかにいる*

    View Slide

  5. いるけど何もできません
    5
    [[email protected] Documents]$ pwd
    /home/book/Documents
    [[email protected] Documents]$ rm -v -rf /home/book/Documents
    ディレクトリを削除しました: `/home/book/Documents'
    [[email protected] Documents]$
    [[email protected] Documents]$ echo "AAA" > a.txt
    bash: a.txt: そのようなファイルやディレクトリはありません
    [[email protected] Documents]$ ls -al
    合計 0
    [[email protected] Documents]$ . と .. も無いことに注意

    View Slide

  6. Linuxでファイル・ディレクトリを削除するとは
    6
    /home/book
    iノード番号 ファイル名
    82490 Documents
    33795498 Desktop
    51812769 Downloads
    Documents
    Desktop
    Downloads

    View Slide

  7. Linuxでファイル・ディレクトリを削除するとは
    7
    /home/book
    iノード番号 ファイル名
    82490 Documents
    33795498 Desktop
    51812769 Downloads
    Documents
    Desktop
    Downloads
    ディレクトリエントリ(台帳)から消すだけ
    そのため「迷子」になる

    View Slide

  8. 応用編 - 消しちまった! でも別のアプリで開いてる
    シナリオ
    1. Documents/secrets.txt をlessで見ていた
    2. [Documents] フォルダごと消してしまった
    $ rm -rf Documents
    3. lessがopenしているFD(File Discriptor)を/procから探してコピーする
    4. 復旧!
    参考: https://mag.osdn.jp/06/11/23/0451251
    8

    View Slide

  9. 9
    1. ~/Documents/secrets.txt を
    開いている状態で……
    2. Documentsフォルダごと消します

    View Slide

  10. 10
    1. lessコマンドのプロセスIDを調べて
    2. lsofコマンドでファイルを開いている
    FD(File Descriptor)を探します

    View Slide

  11. 11
    1. プロセスID=11523, FD=4 をコピーします
    2. ファイル復旧できた!

    View Slide

  12. 12
    lessコマンドを終了させてしまうと、ファイルは
    完全に見えなくなります
    (ただし直後は台帳から消えただけでディスク上に
    残っているので、復旧できる可能性は高いです)

    View Slide