Mountain Lion allows one to encrypt any disk by right-clicking on the disk in the Finder and selecting Encrypt from the contextual menu.
Is there anyway to check on the progress of this encryption process?
Open up the Terminal and enter the command:
diskutil cs list
Or with APFS starting with 10.13
diskutil apfs list
With APFS the FileVault setup utility also shows health and this status:
fdesetup status
You will see an output listing at least one Logical Volume Group, with a Logical Volume Family and Logical Volume nested below.
There is be a Conversion Status
item in the Volume Family entry that will tell you if it's converting to an encrypted volume or not, and for a progress indicator, look under the Logical Volume entry for Size (Total)
and Size (Converted)
entries, to see how many GB have been converted so far.
For an APFS volume, the output is simpler: there will be an Encryption Progress
entry with a percentage as a value (such as 16.0%
). This entry will turn into an Encrypted
entry, with values Yes
or No
. As a complement to the value of either field, (Unlocked)
may be present if the volume encryption is currently unlocked.
Encryption Status: Unlocked
Encryption Type: AES-XTS
Conversion Status: Converting
Conversion Direction: forward
Has Encrypted Extents: Yes
Fully Secure: No
Passphrase Required: Yes
Disk: disk6
Status: Online
Size (Total): 569869340672 B (569.9 GB)
Size (Converted): 231454277632 B (231.5 GB)
Revertible: Yes (unlock and decryption required)
LV Name: Heap
Volume Name: Heap
Content Hint: Apple_HFS
Encryption Status: Unlocked
Encryption Type: AES-XTS
Conversion Status: Complete
Conversion Direction: -none-
Has Encrypted Extents: Yes
Fully Secure: Yes
Passphrase Required: Yes
Disk: disk6
Status: Online
Size (Total): 569869340672 B (569.9 GB)
Size (Converted): -none-
Revertible: Yes (unlock and decryption required)
LV Name: Heap
Volume Name: Heap
Content Hint: Apple_HFS
The actual Terminal output is nested and longer. Here, only the most important information is listed.
Apparently decrypting an external disk is very slow (or even paused) if you use a laptop which is running on batteries. So always make sure to plug it into mains power when performing this operation.
diskutil
will say nothing about encryption, but that the physical volume's Status
is Checking
. You do not need to reboot: a volume eject/re-insert will work. Once you do that, diskutil
will give you output similar to the above.
Commented
Dec 27, 2015 at 4:42
On OS X 10.11.1 the output diskutil cs list
shows encryption progress as:
…
+-- Logical Volume Group 19B060CE-52A6-4102-9F3D-E6108BD91316
=========================================================
Name: My harddrive
Status: Online
Size: 499113885696 B (499.1 GB)
Free Space: 18972672 B (19.0 MB)
|
+-< Physical Volume 3F2AE785-3A81-45E2-9A3B-93BA762C0AD2
| ----------------------------------------------------
| Index: 0
| Disk: disk5s2
| Status: Online
| Size: 499113885696 B (499.1 GB)
|
+-> Logical Volume Family E4B845E2-2294-4F26-89B5-25ADE02747D2
----------------------------------------------------------
Encryption Type: AES-XTS
Encryption Status: Unlocked
Conversion Status: Converting (forward)
High Level Queries: Not Fully Secure
| Passphrase Required
| Accepts New Users
| Has Visible Users
| Has Volume Key
|
+-> Logical Volume 58EA9B33-CD1A-49F7-A596-E2C5ED6E24B5
---------------------------------------------------
Disk: disk6
Status: Online
Size (Total): 498742591488 B (498.7 GB)
Conversion Progress: 2%
Revertible: Yes (unlock and decryption required)
LV Name: My harddrive
Volume Name: My harddrive
Content Hint: Apple_HFS
…
For easier viewing use diskutil cs list | grep Conversion
to only show the line with the progress.
i like to do it this way.
while true; do diskutil cs list | grep 'Conversion Progress' ; sleep 30; done
will print out an updated progress every 30 seconds so you can just leave it running and glance over and instantly see where the progress is up to without having to run the command again.
Just as an extra note to the existing answers, I ran this through grep
to get a concise answer to each conversion.
diskutil cs list | grep -e "Conversion" -e "Volume Name"
The result was:
| Conversion Status: Converting (forward)
| Conversion Progress: 71%
| Volume Name: Macintosh HD
Conversion Status: Converting (forward)
Conversion Progress: 4%
Volume Name: Data
I combined the two answers by Nick Bedford and Owlyfool to produce this:
watch -n 5 "diskutil cs list | grep -e Conversion -e Volume\ Name"
You'll need the linux "watch" command for this. This runs the command by Nick every 5 seconds to give you an update, without scrolling the terminal a whole lot. Also shows a nice timestamp. Example output:
Every 5.0s: diskutil cs list | grep -e Conversion -e Volume\ Name Wed Jul 20 19:21:47 2016
| Conversion Status: Complete
| Volume Name: Macintosh HD
Conversion Status: Converting (forward)
Conversion Progress: 1%
Volume Name: Stijn_Spijker
Show my (already encrypted) internal disk, and my USB disk being encrypted.
Something a little simpler than above. From this File Vault question I also learnt that:
fdesetup status
gives truncated output:
FileVault is Off.
Decryption in progress: Percent completed = 20.58
(OS Sierra 10.12.5)
Based on the answers here, I set up this command for reasonably spaced out status reports with APFS (as opposed to Core Storage)
while true; do diskutil apfs list | grep 'Decryption' ; sleep 720; done
The fdesetup status works quite well for a quick status check.
Similar to owlyfools answer, you can do this for APFS disks using
while true; do diskutil apfs list | grep 'Encryption Progress' ; sleep 60; done
Catalina works with:
while : ; do printf "$(date) - " ; diskutil apfs list|grep Encryption ; sleep 300;done
Giving 5-minute (300 second) interval updates...
If you use:
diskutil apfs list
to find out which disk (in this case disk5) you can be more specific/efficient:
while : ; do printf "$(date) - "; diskutil apfs list disk5|grep Encryption ; sleep 300;done
This gives the output as:
Tue Feb 16 21:51:25 AEDT 2021 - Encryption Progress: 10.0% (Unlocked)
Tue Feb 16 21:56:25 AEDT 2021 - Encryption Progress: 11.0% (Unlocked)
Tue Feb 16 22:01:26 AEDT 2021 - Encryption Progress: 11.0% (Unlocked)
Tue Feb 16 22:06:26 AEDT 2021 - Encryption Progress: 12.0% (Unlocked)
The accepted answer does not seem to work for APFS volumes. It seems that the only way here is to use fdesetup status
. This fantastic blog offers a script which basically uses that command to determine the status. In the article it reads:
If encrypted, the following message is displayed:
FileVault is On.
If not encrypted, the following message is displayed:
FileVault is Off.
If encrypting, the following message is displayed:
Encryption in progress: Percent complete = 27
If decrypting, the following message is displayed without quotes:
Decryption in progress: Percent complete = 10
These are also the outputs of fdesetup status
.
If you'd like to see a more detailed breakdown, open Console (in Applications/Utilities) while running one of the commands described in the other answers in Terminal, e.g. diskutil apfs list
. You'll see status output from the operating system kernel that tells you something like the following:
query_encryption_rolling_state:6317: disk2s1 er:query: returning following: 1, 10[2562600, 1361461884], 60
The number directly before the square brackets is the percentage that gets output on the command line (followed by a ".0%" even though that's not correct). The first number in the square brackets is the region of the disk currently being worked on. The second number in the square brackets is the total number of regions on the disk. You can divide the first into the second to get a more detailed percentage of where you're at.
This also works for monitoring FileVault decryption status.
Came looking for this and the answer provided by manicmoose was the closest to what I needed however, as I didn't like that sleep was not exact and the seconds counted up by 1 every 10-11 loops, I edited their code slightly.
while :; do
printf "$(date) - ";
diskutil apfs list disk4|grep Encryption;
sleep $((120 - $(date +%s) % 60));
done
The sleep now maxes out at 120 seconds minus seconds to the full minute so the output looks like
Thu 8 Aug 2024 19:20:31 BST - Encryption Progress: 49.0% (Unlocked)
Thu 8 Aug 2024 19:22:00 BST - Encryption Progress: 49.0% (Unlocked)
Thu 8 Aug 2024 19:24:00 BST - Encryption Progress: 49.0% (Unlocked)
Thu 8 Aug 2024 19:26:00 BST - Encryption Progress: 49.0% (Unlocked)
1st iteration is immediate but the 2nd onward are all on the minute
An alternative to the timed status reports in other answers that use diskutil cs list
or diskutil apfs list
, you can also use fdesetup status
.
For the currently booted volume:
while true; do fdesetup status | grep 'Percent'; sleep 30; done
For a mounted external drive:
while true; do
fdesetup status -device <disk identifier> | grep 'Percent'
sleep 30
done
where <disk identifier>
is in a form like disk3s1
corresponding to your external disk's system or data volume as found in diskutil list
.