В настоящее время я работаю над удалением шифрования моего домашнего каталога, следуя инструкциям, данным ecryptfs-setup-private --undo
.
Я вышел из графического сеанса и вошел на tty, чтобы переместить все файлы из ~ во временное местоположение (в тот же раздел, что и / home), и, следовательно, из / home я выполнил следующую команду: .
Команда переместила около 30% файлов, а затем остановилась из-за недостатка места. Когда я проверил вывод df -h, я заметил, что домашний раздел заполнен.
До начала операции перемещения у меня было около 70 ГБ свободного места, и, поскольку, насколько я знаю, ecryptfs не сжимает файлы, я думал, что все будет хорошо.
Что я могу сделать в этой ситуации?
Очевидно, некоторые глубоко закопанные файлы были оставлены mv (они не были удалены после копирования).
Я нашел и удалил их с помощью этого сценария:
#!/bin/bash
TARGET=/home/zoopp.unencrypted/
SOURCE=/home/zoopp/
find $TARGET -type f | while read file; do
RELATIVE_PATH=$(echo $file | sed -e 's/^\/home\/zoopp.unencrypted\///')
if [ -e "$SOURCE$RELATIVE_PATH" ]; then
TARGET_FILE="$TARGET$RELATIVE_PATH"
SOURCE_FILE="$SOURCE$RELATIVE_PATH"
echo "Found $TARGET_FILE -> $SOURCE_FILE"
MD5_TARGET=$(md5sum "$TARGET_FILE" | cut -d' ' -f 1)
MD5_SOURCE=$(md5sum "$SOURCE_FILE" | cut -d' ' -f 1)
echo -e "\tMD5: $MD5_TARGET -> $TARGET_FILE"
echo -e "\tMD5: $MD5_SOURCE -> $SOURCE_FILE"
if [ "$MD5_TARGET" != "$MD5_SOURCE" ]; then
echo -e "\tMissmatch."
echo -e "\tDeleting $TARGET_FILE."
rm -f "$TARGET_FILE"
echo -e "\tMoving $SOURCE_FILE -> $TARGET_FILE"
mv "$SOURCE_FILE" "$TARGET_FILE"
else
echo -e "\tMatch. Deleting $SOURCE_FILE"
rm -f "$SOURCE_FILE"
fi
echo
fi
done
В качестве примечания: было бы быстрее просто проверить разницу в размере файла, а не сравнивать хеш MD5 каждого возможного дубликата.