내 컴퓨터에는 500GB 드라이브가 있습니다.
/unencrypted
400GB 데이터를 에서 으로 이동하고 싶습니다 /encrypted
.
두 디렉터리는 모두 동일한 파티션에 있지만 /encrypted
다음과 같이 표시됩니다 .암호화된 파일 시스템,그러므로 mv /uncrypted/* /encrypted
:
- 모든 파일을 대상에 복사
- 그런 다음 소스에서 제거하십시오.
...800GB가 필요하기 때문에 감당할 수 없습니다.
파일을 차례로 이동하면 문제가 없습니다(ecryptfs 영역은 동적임).
mv
파일별로 디렉터리 파일을 이동하는 옵션이나 다른 도구가 있습니까 ?
파일 수가 많기 때문에 스크립트 기반 솔루션에서는 ARG_MAX가 문제가 될 수 있습니다.
답변1
다음이 있는 경우 rsync
( --dry-run
실제로 이 작업을 수행하려면 제거하세요):
rsync --dry-run --remove-source-files -avHAX /unencrypted/ /encrypted
그렇지 않으면 bash4+ 및 GNU stat을 사용하십시오.
#!/bin/bash
set -e
shopt -s nullglob globstar
for from in /unencrypted/**/*; do
to="${from/\/un//}"
if [[ -d "$from" ]]; then
echo mkdir -p "$to"
echo chmod "$(stat -c %a "$from")" "$to"
echo chown "$(stat -c %u:%g "$from")" "$to"
else
echo cp -a "$from" "$to" && echo rm "$from"
fi
done
echo rm -r /unencrypted
실제로 실행하려면 echo
각 명령에서 제거하십시오.