Data Migration HowTo

You need to migrate your data before January 22.

 

We expect best performance for the data transfers on the genoa system. You need to migrate relevant data from your user, project, and share folders in the old WORK file system:

  • /old-scratch/usr/username

  • /old-scratch/projects/projectname

  • /old-scratch/share/sharename

  • (/old-scratch/tmp/username)

We recommend migrating your data by

  • running a rsync on genoa-login node

  • use tmux to keep your transfer running without being logged in to the system

  • example rsync call:

    ssh username@genoa-login.nhr.zib.de $ rsync -av /old-scratch/usr/username/folder_i_want_to_keep /scratch/usr/username/

 

Moving large directories with parallel rsyncs

For directories with a lot of data and many files in different subdirectories, the transfer might be sped up by running several rsync processes in parallel. For this we first need a list of files/folders up to a certain depth.

We can generate a directory and file list e.g. with find with the -maxdepth flag:

blogin9:~ $ find /old-scratch/usr/myusername/testfolder -maxdepth 1 /old-scratch/usr/myusername/testfolder /old-scratch/usr/myusername/testfolder/debian-10.2.0-amd64-netinst.iso /old-scratch/usr/myusername/testfolder/firmware-10.2.0-amd64-netinst.iso /old-scratch/usr/myusername/testfolder/folder1 blogin9:~ $ find /old-scratch/usr/myusername/testfolder -maxdepth 2 /old-scratch/usr/myusername/testfolder /old-scratch/usr/myusername/testfolder/debian-10.2.0-amd64-netinst.iso /old-scratch/usr/myusername/testfolder/firmware-10.2.0-amd64-netinst.iso /old-scratch/usr/myusername/testfolder/folder1 /old-scratch/usr/myusername/testfolder/folder1/file2 /old-scratch/usr/myusername/testfolder/folder1/folder11

An then run one rsync for every line in that output with the following script (adjust TARGET and DIRFILE):

#!/bin/bash set -e PARALLEL=10 RSYNC_OPTS="-aH --itemize-changes --stats --delete --numeric-ids --one-file-system --no-v" TARGET="/scratch/myusername/old_files" DIRFILE="/home/myusername/list_of_files_and_folders.log" #dirfile with full paths - take care of trailing slashes restart_rsync() { RC=30 count=0 while [ "$RC" = "30" ]; do let count=$count+1 /usr/bin/rsync $RSYNC_OPTS --timeout=120 $1 $TARGET RC=$? if [ "$count" -gt "5" ]; then break fi done } export -f restart_rsync export RSYNC_OPTS export TARGET echo "Using up to $PARALLEL processes for transfer..." echo "Using directories from file $DIRFILE ..." cat $DIRFILE | parallel -q -j $PARALLEL -t restart_rsync {}

 

Related pages