将文件从加密用户文件夹移动到未加密用户文件夹后,我的 /home 分区已满。我该怎么办?

将文件从加密用户文件夹移动到未加密用户文件夹后,我的 /home 分区已满。我该怎么办?

我目前正在按照给出的说明删除我的主目录加密ecryptfs-setup-private --undo

我已退出图形会话并登录 tty,以便将所有文件从 ~ 移动到临时位置(与 /home 位于同一分区),因此从 /home 发出了以下命令:find ~ -maxdepth 1 -mindepth 1 -not -name .Private -and -not -name .ecryptfs -exec mv '{}' -t zoopp.unencrypted \;

该命令移动了大约 30% 的文件,然后由于空间不足而停止。当我检查“df -h”的输出时,我注意到主分区已满。

在开始移动操作之前,我有大约 70GB 的可用空间,而且据我所知,ecryptfs 不会压缩文件,所以我认为一切都会好起来。

在这种情况下我能做什么?

答案1

显然,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 哈希值,速度会更快。

相关内容