]>
zdv2.bktei.com Git - BK-2020-03.git/blob - user/rsync_tranches.sh
0456daa30969ba2dc09135088ae80bc78896046f
   2 # Desc: A bash function for splitting up rsync jobs based on size 
   4 echo "ERROR:This is a bash function, not a script." 2>&1; exit 1; 
   6 function rsync_tranches
() { 
   7     # Desc: Runs rsync in parallel across different files size ranges 
   8     # Example: rsync_tranches -avu --progress --dry-run ./SOURCE/ ./DEST/ 
  11     local -a rsync_opts
=(); 
  14     # Parse arguments until source and destination are found 
  15     while [[ $# -gt 0 ]]; do 
  17             # If it's not an option, assume it's the source, then the destination 
  23                 if [ -z "$source" ]; then 
  33     # Validate that source and destination are set 
  34     if [[ -z "$source" ]] || 
[[ -z "$dest" ]]; then 
  35         echo "Error: Source and destination directories must be specified." 1>&2; 
  39     # Tranche 1: 0 to 1MiB-1 
  40     rsync 
--min-size='0' --max-size='1MiB-1' "${rsync_opts[@]}" "$source" "$dest"; 
  42     # Tranche 2: 1MiB to 2MiB-1 
  43     rsync 
--min-size='1MiB' --max-size='2MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  46     # Tranche 3: 2MiB to 4MiB-1 
  47     rsync 
--min-size='2MiB' --max-size='4MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  49     # Tranche 4: 4MiB to 8MiB-1 
  50     rsync 
--min-size='4MiB' --max-size='8MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  52     # Tranche 5: 8MiB to 16MiB-1 
  53     rsync 
--min-size='8MiB' --max-size='16MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  55     # Tranche 6: 16MiB to 32MiB-1 
  56     rsync 
--min-size='16MiB' --max-size='32MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  58     # Tranche 7: 32MiB to 64MiB-1 
  59     rsync 
--min-size='32MiB' --max-size='64MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  61     # Tranche 8: 64MiB to 128MiB-1 
  62     rsync 
--min-size='64MiB' --max-size='128MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  64     # Tranche 9: 128MiB to 256MiB-1 
  65     rsync 
--min-size='128MiB' --max-size='256MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  67     # Tranche 10: 256MiB to 512MiB-1 
  68     rsync 
--min-size='256MiB' --max-size='512MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  70     # Tranche 11: 512MiB to 1024MiB-1 
  71     rsync 
--min-size='512MiB' --max-size='1024MiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  73     # Tranche 12: Greater than 1024MiB 
  74     rsync 
--min-size='1024MiB' --max-size='8192PiB-1' "${rsync_opts[@]}" "$source" "$dest" & 
  76     wait # Wait for all rsync processes to complete 
  78 export -f rsync_tranches
; 
  80 # Author: Steven Baltakatei Sandoval