I had a little problem when running a script: this script reads a config file on $HOME
, and it had ~/Downloads
inside it.
Instead of saving a file inside ~/Downloads
when I executed the script, since I executed it inside ~/Library
, it created ~/Library/~/Downloads
.
Inside ~/Library
, I did rm -rf ~
. After 1-2s I realized my mistake and stopped using ˆ-C
- it was deleting my $HOME
.
I know some files were deleted, but don't know which ones. Some hidden files (bash_functions, bash_aliases) were deleted and I had a backup, but some files on $HOME
aren't backed up.
I did a quick verification on my files (seeing the modified dates of the folder on $HOME
), it seemed okay, but I know I can't trust my eyes using this approac.
I know that if I change a file inside a Folder, Mac will change the "modified" flag for that folder, but only if a direct child of that folder was changed. Example:
~/Downloads
- file.txt
/Mp3
- music.mp3
So, if you change file.txt
, ~/Downloads
will have it's modified flag changed, but if you change music.mp3
, ~/Downloads
will not have it's modified flag changed.
So here lies the problem: I don't know how rm -rf
starts deleting my files. Is is sequentially? Is it in an arbitrary order? Could it be it started deleting ~/Pictures/Wedding
and suddenly went do ~/Videos
? I don't know. I believe it doesn't delete sequentially, so now I can have a really deep directory without important files after my rm -rf
mistake.
Is there some place on the mac where all deleted files with rm -rf
are kept (just the filenames)? I didn't find anything like that, so I did
find ~ -type d -mtime -1 > modified_folders.txt
on my terminal since I did the mistaken rm -rf
today. The result of the find
command, the changed folders (if you delete a file, Mac changes modified flag of it's direct folder parent) seems to not have a "deep arbitrary" structure like ~/Pictures/Personal/Birthday/2010/Cake
... can I then assume rm -rf
didn't touch the wrong files and I were able to stop the armageddon just by stopping rm -rf ~
after 1-2s (so it deleted just some of the hidden files on $HOME
)?
(I have already restarted my machine, it's working fine. I'm on Snow Leopard, so tmutil isn't a solution I think...)
(I already know some solutions to recover like TestDisk exist, but I'm trying to use it as a last approach (if I'm wrong in my assumptions about the find
snippet).
rm -rf
and stopped like I did? If is it true that only dot are deleted first, I believe I lost only bash_functions and bash_aliases (possibly other dot files/directories, but Python distributions are installed on .local and it wasn't deleted, so at least from that folder to others, everything is intact). – Somebody still uses you MS-DOS Oct 26 '11 at 21:59touch b{a..z}{a..z}.foo
. In a second shellsudo fs_usage -w | grep unlink
. Enjoy watching the sequence ofrm
in action. – bmike Oct 26 '11 at 22:46