Rip2 – A safer, rust-based rm
github.com
github.com
EDIT: just tested it, it creates /tmp/graveyard-$USER with 0755.
But then file permissions being "wrong" or relying on the parent folder is the norm...
I wonder if it does keep ACLs associated with the file.
~ $ ll -d $HOME/.local/share/Trash
drwx------. 5 me me 47 Jan 15 2020 /home/me/.local/share/Trash
Home directories and the root they're stored in aren't generally well-protected, trash directories should do so to avoid leaking.Per the XDG spec if this is open, you want sticky bits. More justice (and considerations) here: https://specifications.freedesktop.org/trash-spec/latest/
An interesting challenge or angle to this: space consumption, ownership in a real-world sense (ie: fingerpointing)
Absolutely none of this is a concern for this project, though. I just find this-then-that stuff funny
Whenever exact file copies are desired, they must not pass through /tmp or through any other place where tmpfs is mounted, unless it is checked that the tmpfs version is new enough to preserve file metadata.
(In multi-user computers, it was usual to copy a file through /tmp for copies between users, because that might have been the only place where both users had access.)
Older versions of tmpfs did not support any extended attributes, then only certain system attributes were preserved, while all user attributes were deleted. Only one year or two ago tmpfs has been enhanced to preserve most extended attributes, with some size constraints. Many older systems still have tmpfs versions that lose the extended attributes.
So the trash bin leaves grime on things, great.
And for everyone else, always worth remembering that author could have instead built: .
Instead they chose to build something, so let's not shit all over their intent
> Graveyard location.
> You can see the current graveyard location by running rip graveyard. If you have $XDG_DATA_HOME environment variable set, rip will use $XDG_DATA_HOME/graveyard instead of the $TMPDIR/graveyard-$USER.
> If you want to put the graveyard somewhere else (like ~/.local/share/Trash), you have two options, in order of precedence:
> Alias rip to rip --graveyard ~/.local/share/Trash
> Set the environment variable $RIP_GRAVEYARD to ~/.local/share/Trash.
> This can be a good idea because if the graveyard is mounted on an in-memory file system (as /tmp is in Arch Linux), deleting large files can quickly fill up your RAM. It's also much slower to move files across file systems, although the delay should be minimal with an SSD.
then puts the default trash location in /tmp ? knowing its a bad decision? kinda makes me leery of the rest with this kind of reasoning skills
It would be much better to put the files somewhere else and clear old files whenever rip was run.
Kinda bad example since this tool doesn't follow xdg-trash spec per README. Tools that do (such as the file managers from the big DEs) use this directory.
rip2 creates the graveyard with 0700, not 0755. That change was one of the reasons for forking from the original rip.
Code: https://github.com/MilesCranmer/rip2/blob/6165ed0c692b27f196...
> does not implement the xdg-trash spec or attempt to achieve the same goals
Second warning, deleted files become world readable by design
> Deleted files get sent to the graveyard (typically /tmp/graveyard-$USER
This is not true. I just tested to be sure; the permissions of files are preserved.
It's moving files out of potentially-safe directories into definitely-not-safe
For example, you can also "delete" files by accidentally redirecting to them using the ">" operator in the shell.
Maybe some kind of snapshotting filesystem (+ tools) is a better way to deal with this.
- the allure of improving on well established UNIX commands (always an interesting topic)
- and the "it's rust factor"
Previous comment on the topic: https://news.ycombinator.com/item?id=41794221
it's just plain old bash, so nothing fancy like Rust, but it should work
Any serious Windows app needs to spawn many threads to work around this performance issue when batch operating on lots of files.
Played around with rip2 on my MacOS.
Unfortunately after playing with it for two minutes, the "undo" and "scance" functionality seemed to break:
I have opened a bug https://github.com/MilesCranmer/rip2/issues/54].
am I doing something wrong?
TBF it's a surprisingly not straightforward problem. I appreciate the effort and would like it to succeed.