I've just updated to macOS 10.12 and when I try to execute srm
in Terminal, it says -bash: srm: command not found
.
Is srm
removed? How to fix this?
Ask Different is a question and answer site for power users of Apple hardware and software. It only takes a minute to sign up.
Sign up to join this communityNot yet running macOS 10.12 however under OS X 10.8.5 the man page for srm
in the NOTES
section states:
Development and discussion of srm is carried out at <http://sourceforge.net/project/?group_id=3297>, which is also accessible via <http://srm.sourceforge.net>.
Now you'd have to download the source code and compile it for yourself. This would require Command Line Tools for Xcode be installed. Not sure if still applicable under macOS 10.12 however, see How to Install Command Line Tools in OS X Mavericks & Yosemite (Without Xcode) for details. Or in Terminal use the following command: xcode-select --install
I downloaded the latest source code and it compiled without errors under OS X 10.8.5, although that doesn't mean it will under macOS 10.12 but it's probably the only choice you've got if srm
has been removed.
That said, I probably would only srm
on rotational HDD's not SSD's.
brew install srm && brew link --force srm
From this comment:
can you come up with a better idea or safely removing files from SSD on newer macs? – Niktin Roman
There's no need for srm
; provided that TRIM is enabled on your machine1
TRIM support handles this for you. When you delete a file from your drive, the OS will mark the file space as "not in use" - this applies to any drive. On an SSD, unlike a HDD, a TRIM command is sent to wipe any data in that marked space. This allows your SSD to be able to write data to that marked space as if it was brand new and never used, and skip the traditional deletion process.
If you are looking for more security, turn on FileVault.
Per Apple Support:
Note: With an SSD drive, Secure Erase and Erasing Free Space are not available in Disk Utility. These options are not needed for an SSD drive because a standard erase makes it difficult to recover data from an SSD. For more security, consider turning on FileVault encryption when you start using your SSD drive.
I also advise against using srm
because it issues more and unnecessary write operations to the SSD, thus shortening it's lifespan. From the man page:
srm removes each specified file by overwriting, renaming, and truncating it before unlinking
sudo trimforce enable
in Terminal.
~/.Trash
. So "moving a file to the trash" is just that - moving a file. When you empty the trash is when you actually delete the file. When the file is actually deleted via this method or via rm
is when TRIM takes effect.
rm has a -P switch that will overwrite the file three times before deleting. Better than nothing, I suppose.
To securely delete a file/folder on MacOS Sierra without external utilities use rm
with the -P
switch:
## delete a single file
rm -Pv wikileak1.txt
## delete a folder recursively
rm -Pvrf ~/.wikileaks
From the man page:
-P Overwrite regular files before deleting them. Files are
overwritten three times, first with the byte pattern 0xff,
then 0x00, and then 0xff again, before they are deleted.
-v increase verbosity
NOTE: In case you installed GNU coreutils from homebrew with the default names, e.g.
brew install coreutils --default-names
, then, depending on how you configured your PATH, the GNU version ofrm
could shadow the Mac version at/bin/rm
and it won't accept the-P
option. Usewhich -a rm
to double-check.
Since this question was originally answered two things have happened:
homebrew-dupes
was merged into homebrew-core
srm
was deleted from homebrew-core
If you try to install it now it will give you details of the deleting commit and a suggestion to create your own tap if you still need it. I have done so here.
You can install it using Homebrew: brew install khell/homebrew-srm/srm
There are plenty of good reasons not to use secure deletion tools (srm
, shred
, rm -P
, etc) on modern systems (with TRIM-enabled SSDs and/or journalled file systems). @Allan's answer in particular is spot on.
However, if you really, really want to restore srm
, someone's published a Homebrew tap here that works. Ie:
brew install khell/homebrew-srm/srm
srm secrets.txt
(After you've installed Homebrew, obviously.)
sudo port install srm that will do
-bash: port: command not found
error, so some more details may be required here.
srm
was a dying project back in the early 2000's. Apple poured some resources into the project and it first appears in 10.3. You should be aware that usingsrm
does not guarantee the data is not recoverable .rm
or empty Trash in the GUI.