20

My computer has one 500GB drive.

I want to move 400GB of data from /unencrypted to /encrypted.

Both directories are on the same partition, but /encrypted is handled by ecryptfs, so mv /uncrypted/* /encrypted would:

  1. Copy all files to destination
  2. Then remove them from source

...which I can't afford, because it requires 800GB.
If files were moved one-by-one, there would be no problem (the ecryptfs zone is dynamic).

Is there an mv option or another tool, that moves a directory file-by-file?
There is a huge number of files, so ARG_MAX might be a problem for script-based solutions.

20

If you have rsync (remove --dry-run to do it for real):

rsync --dry-run --remove-source-files -avHAX /unencrypted/ /encrypted

Otherwise, using bash4+ and 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

To run it for real, remove echo from each command.

  • I love the rsync idea! Apparently files are indeed removed as they are moved: superuser.com/questions/405761 – Nicolas Raoul May 16 '13 at 7:09
  • @NicolasRaoul If I recall correctly, the removals are buffered, but it is close to one-to-one copy/remove. – Chris Down May 16 '13 at 7:10
  • Chunks are fine for me, as long as each chunk weights less than 50GB. – Nicolas Raoul May 16 '13 at 7:12
  • Wouldn't you need to remove --dry-run from the rsync command line, too? – a CVn May 16 '13 at 7:41
  • 1
    @meduz v is optional and just prints the filenames as they are transferred. aHAX is required to keep all possible file attributes -- a is archive, HAX is "keep hardlinks, ACLs, and extended attributes". – Chris Down May 23 '13 at 4:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.