Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- export MY_WHICH=`which which`
- export MY_RSYNC_BIN=`${MY_WHICH} rsync`
- export MY_FSCK_GRACE_TIME="10" ## Grace time in seconds as in having `sleep 1s` running in loop for every count...
- export MY_FSCK_LONG_NAME="$0"
- export MY_FSCK_SHORT_NAME=`basename ${MY_FSCK_LONG_NAME}`
- export MY_FSCK_FUCKUP_BASENAME="safe-rsync-testing-"
- export MY_FSCK_FUCKUP_TIMESTAMP=`date "+%Y%m%dT%H%M%S.%N_%Z"`
- export MY_FSCK_FUCKUP_PWD="/root/"
- export MY_FSCK_FUCKUP_NAME="${MY_FSCK_FUCKUP_PWD}${MY_FSCK_FUCKUP_BASENAM}${MY_FSCK_FUCKUP_TIMESTAMP}"
- export MY_FSCK_LOG_FILE="${MY_FSCK_FUCKUP_NAME}.log"
- export MY_FSCK_BATCH_FILE="${MY_FSCK_FUCKUP_NAME}_batch"
- ################################################################################
- ## Some Stuff
- # The CVSIGNORE environment variable supplements any ignore patterns in .cvsignore files. See the --cvs-exclude option for more details.
- unset CVSIGNORE
- # Specify a default --iconv setting using this environment variable. (First supported in 3.0.0.)
- unset RSYNC_ICONV
- # Specify a non-zero numeric value if you want the --protect-args option to be enabled by default, or a zero value to make sure that it is disabled by default. (First supported in 3.1.0.)
- unset RSYNC_PROTECT_ARGS
- export RSYNC_PROTECT_ARGS=1
- # The RSYNC_RSH environment variable allows you to override the default shell used as the transport for rsync. Command line options are permitted after the command name, just as in the -e option.
- unset RSYNC_RSH
- # The RSYNC_PROXY environment variable allows you to redirect your rsync client to use a web proxy when connecting to a rsync daemon. You should set RSYNC_PROXY to a hostname:port pair.
- unset RSYNC_PROXY
- # Setting RSYNC_PASSWORD to the required password allows you to run authenticated rsync connections to an rsync daemon without user intervention. Note that this does not supply a password to a remote shell transport such as ssh; to learn how to do that, consult the remote shell?s documentation.
- unset RSYNC_PASSWORD
- echo " \$0 = $0"
- echo " \$* = $*"
- echo " ($0 $*)"
- echo " \$1 = $1"
- echo " \$2 = $2"
- echo " \$3 = $3"
- echo " \$4 = $4"
- echo " \$5 = $5"
- echo "MY_FSCK_FUCKUP = $MY_FSCK_FUCKUP_testing"
- echo "MY_FSCK_LONG_NAME = ${MY_FSCK_LONG_NAME}"
- echo "MY_FSCK_SHORT_NAME = ${MY_FSCK_SHORT_NAME}"
- echo "MY_WHICH = ${MY_WHICH}"
- echo "MY_RSYNC_BIN = ${MY_RSYNC_BIN}"
- OUR_RSYNC_OPTS_STRING=""
- # OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}"
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--verbose "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--human-readable "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--progress "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--stats "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--itemize-changes "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--one-file-system "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--checksum "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--archive "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--recursive "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--perms "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--executability "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--links "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--copy-unsafe-links "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--times "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--group "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--owner "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--sparse "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--partial "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--acls "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--xattrs "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--hard-links "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--protect-args "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--compress-level=0 "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--no-compress "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--super "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--specials "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--preallocate "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--copy-dirlinks "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--usermap=38242:1975 "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--groupmap=38242:1975 "
- OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--outbuf=block "
- ##OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--timeout=10 "
- ##OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--dry-run "
- ##OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--log-file-format=FMT "
- ##OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--log-file-format=\"%Y%m%dT%H%M%S.%N_%Z\" "
- # OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--log-file=${MY_FSCK_LOG_FILE} "
- # OUR_RSYNC_OPTS_STRING="${OUR_RSYNC_OPTS_STRING}--only-write-batch=${MY_FSCK_BATCH_FILE} "
- OUR_FSCK_FINAL_RSYNC_COMMAND="${MY_RSYNC_BIN} ${OUR_RSYNC_OPTS_STRING}${1} ${2}"
- echo -e "\n\n"
- echo "###### DANGER ############ DANGER ############ DANGER ############ DANGER ######"
- echo "#"
- echo "#"
- echo "# executing the following command in ${MY_FSCK_GRACE_TIME} seconds:"
- echo "#"
- echo "#"
- echo ""
- echo "SUPERDATE = %Y%m%dT%H%M%S.%N_%Z"
- echo "SUPERDATE = `date +%Y%m%dT%H%M%S.%N_%Z` (\`date %Y%m%dT%H%M%S.%N_%Z\`)"
- echo ""
- echo "${OUR_FSCK_FINAL_RSYNC_COMMAND}"
- echo ""
- echo ""
- echo "#"
- echo "#"
- echo "# delay for..."
- echo -en "${MY_FSCK_GRACE_TIME}... "
- for MY_FSCK_GRACE_TIME_COUNTER in `seq 1 ${MY_FSCK_GRACE_TIME}` ; do
- sleep 1s
- MY_FSCK_GRACE_TIME_COUNTER_REMAINING=$((${MY_FSCK_GRACE_TIME}-${MY_FSCK_GRACE_TIME_COUNTER}))
- echo -en "\n\n${MY_FSCK_GRACE_TIME_COUNTER_REMAINING}... "
- done
- #echo "you got lucky!!!"
- echo "let's go!"
- $OUR_FSCK_FINAL_RSYNC_COMMAND
- exit 254
- ################################################################################
- ## --remove-source-files
- ## This tells rsync to remove from the sending side the files (meaning non-directories) that are a part of the transfer and
- ## have been successfully duplicated on the receiving side.
- ## -B, --block-size=BLOCKSIZE
- ## This forces the block size used in rsync?s delta-transfer algorithm to a fixed value. It is normally selected based on
- ## the size of each file being updated. See the technical report for details.
- ################################################################################
- ## --list-only
- ## This option will cause the source files to be listed instead of transferred. This option is inferred if there is a single
- ## source arg and no destination specified, so its main uses are: (1) to turn a copy command that includes a destination arg
- ## into a file-listing command, or (2) to be able to specify more than one source arg (note: be sure to include the destina?
- ## tion). Caution: keep in mind that a source arg with a wild-card is expanded by the shell into multiple args, so it is
- ## never safe to try to list such an arg without using this option. For example:
- ##
- ## rsync -av --list-only foo* dest/
- ##
- ## Starting with rsync 3.1.0, the sizes output by --list-only are affected by the --human-readable option. By default they
- ## will contain digit separators, but higher levels of readability will output the sizes with unit suffixes. Note also that
- ## the column width for the size output has increased from 11 to 14 characters for all human-readable levels. Use --no-h if
- ## you want just digits in the sizes, and the old column width of 11 characters.
- ##
- ## Compatibility note: when requesting a remote listing of files from an rsync that is version 2.6.3 or older, you may
- ## encounter an error if you ask for a non-recursive listing. This is because a file listing implies the --dirs option w/o
- ## --recursive, and older rsyncs don?t have that option. To avoid this problem, either specify the --no-dirs option (if you
- ## don?t need to expand a directory?s content), or turn on recursion and exclude the content of subdirectories: -r
- ## --exclude='/*/*'.
- ##
- ## --bwlimit=RATE
- ## This option allows you to specify the maximum transfer rate for the data sent over the socket, specified in units per sec?
- ## ond. The RATE value can be suffixed with a string to indicate a size multiplier, and may be a fractional value (e.g.
- ## "--bwlimit=1.5m"). If no suffix is specified, the value will be assumed to be in units of 1024 bytes (as if "K" or "KiB"
- ## had been appended). See the --max-size option for a description of all the available suffixes. A value of zero specifies
- ## no limit.
- ##
- ## For backward-compatibility reasons, the rate limit will be rounded to the nearest KiB unit, so no rate smaller than 1024
- ## bytes per second is possible.
- ##
- ## Rsync writes data over the socket in blocks, and this option both limits the size of the blocks that rsync writes, and
- ## tries to keep the average transfer rate at the requested limit. Some "burstiness" may be seen where rsync writes out a
- ## block of data and then sleeps to bring the average rate into compliance.
- ##
- ## Due to the internal buffering of data, the --progress option may not be an accurate reflection on how fast the data is
- ## being sent. This is because some files can show up as being rapidly sent when the data is quickly buffered, while other
- ## can show up as very slow when the flushing of the output buffer occurs. This may be fixed in a future version.
- ##
- ## --write-batch=FILE
- ## Record a file that can later be applied to another identical destination with --read-batch. See the "BATCH MODE" section
- ## for details, and also the --only-write-batch option.
- ##
- ## --only-write-batch=FILE
- ## Works like --write-batch, except that no updates are made on the destination system when creating the batch. This lets
- ## you transport the changes to the destination system via some other means and then apply the changes via --read-batch.
- ##
- ## Note that you can feel free to write the batch directly to some portable media: if this media fills to capacity before the
- ## end of the transfer, you can just apply that partial transfer to the destination and repeat the whole process to get the
- ## rest of the changes (as long as you don?t mind a partially updated destination system while the multi-update cycle is hap?
- ## pening).
- ##
- ## Also note that you only save bandwidth when pushing changes to a remote system because this allows the batched data to be
- ## diverted from the sender into the batch file without having to flow over the wire to the receiver (when pulling, the
- ## sender is remote, and thus can?t write the batch).
- ##
- ## --read-batch=FILE
- ## Apply all of the changes stored in FILE, a file previously generated by --write-batch. If FILE is -, the batch data will
- ## be read from standard input. See the "BATCH MODE" section for details.
- ##
- ##
- ## --checksum-seed=NUM
- ## Set the checksum seed to the integer NUM. This 4 byte checksum seed is included in each block and MD4 file checksum cal?
- ## culation (the more modern MD5 file checksums don?t use a seed). By default the checksum seed is generated by the server
- ## and defaults to the current time() . This option is used to set a specific checksum seed, which is useful for applica?
- ## tions that want repeatable block checksums, or in the case where the user wants a more random checksum seed. Setting NUM
- ## to 0 causes rsync to use the default of time() for checksum seed.
- ##
- ################################################################################
- ## --out-format=FORMAT
- ## This allows you to specify exactly what the rsync client outputs to the user on a per-update basis. The format is a text
- ## string containing embedded single-character escape sequences prefixed with a percent (%) character. A default format of
- ## "%n%L" is assumed if either --info=name or -v is specified (this tells you just the name of the file and, if the item is a
- ## link, where it points). For a full list of the possible escape characters, see the "log format" setting in the
- ## rsyncd.conf manpage.
- ##
- ## Specifying the --out-format option implies the --info=name option, which will mention each file, dir, etc. that gets
- ## updated in a significant way (a transferred file, a recreated symlink/device, or a touched directory). In addition, if
- ## the itemize-changes escape (%i) is included in the string (e.g. if the --itemize-changes option was used), the logging of
- ## names increases to mention any item that is changed in any way (as long as the receiving side is at least 2.6.4). See the
- ## --itemize-changes option for a description of the output of "%i".
- ##
- ## Rsync will output the out-format string prior to a file?s transfer unless one of the transfer-statistic escapes is
- ## requested, in which case the logging is done at the end of the file?s transfer. When this late logging is in effect and
- ## --progress is also specified, rsync will also output the name of the file being transferred prior to its progress informa?
- ## tion (followed, of course, by the out-format output).
- ##
- ################################################################################
- ##
- ## --log-file-format=FORMAT
- ## This allows you to specify exactly what per-update logging is put into the file specified by the --log-file option (which
- ## must also be specified for this option to have any effect). If you specify an empty string, updated files will not be
- ## mentioned in the log file. For a list of the possible escape characters, see the "log format" setting in the rsyncd.conf
- ## manpage.
- ##
- ## The default FORMAT used if --log-file is specified and this option is not is ?%i %n%L?.
- ##
- ################################################################################
- ################################################################################
- # oldoptsfu -valES --no-compress scSrix
- ## -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
- ## -r, --recursive recurse into directories
- ## -l, --links copy symlinks as symlinks
- ## -p, --perms preserve permissions
- ## -t, --times preserve modification times
- ## -g, --group preserve group
- ## -o, --owner preserve owner (super-user only)
- ##
- ## -v, --verbose increase verbosity
- ## -A, --acls preserve ACLs (implies -p)
- ## -H, --hard-links preserve hard links
- ## -s, --protect-args no space-splitting; wildcard chars only
- ## -S, --sparse handle sparse files efficiently
- ## -h, --human-readable output numbers in a human-readable format
- ## --progress show progress during transfer
- ## --stats give some file-transfer stats
- ## -x, --one-file-system don_t cross filesystem boundaries
- ## -c, --checksum skip based on checksum, not mod-time & size
- ## --copy-unsafe-links only "unsafe" symlinks are transformed
- ## -E, --executability preserve executability
- ## --partial keep partially transferred files
- ## -i, --itemize-changes output a change-summary for all updates
- ##
- ## --log-file=FILE log what we_re doing to the specified FILE
- ## --log-file-format=FMT log updates using the specified FMT
- ##
- ## --inplace ## potentially dangerous, only for initial copy
- ## --numeric-ids don_t map uid/gid values by user/group name
- ## --usermap=STRING custom username mapping
- ## --groupmap=STRING custom groupname mapping
- ## --chown=USER:GROUP simple username/groupname mapping
- ##
- ## --no-compress
- ##
- ## -z, --compress compress file data during the transfer
- ## --compress-level=NUM explicitly set compression level
- ## --skip-compress=LIST skip compressing files with suffix in LIST
- ##
- #### --no-OPTION turn off an implied OPTION (e.g. --no-D)
- ## --only-write-batch=/root/hackyshome_rsync.log
Add Comment
Please, Sign In to add comment