|
@@ -1,7 +1,8 @@
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -13,19 +14,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
function ts() {
|
|
|
|
|
|
ts=$(date)
|
|
|
echo $(date )
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
usage () {
|
|
|
echo "Usage: $0 -s - source, -d destination, -n note";
|
|
|
exit 1;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
while getopts s:d:n: flag
|
|
|
do
|
|
|
case "${flag}" in
|
|
@@ -37,18 +45,18 @@ do
|
|
|
done
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
if [ -z ${src} ]; then
|
|
|
- read -p "Source [$(pwd)]: " src
|
|
|
+ read -p "[ $(ts) ]: Source [$(pwd)]: " src
|
|
|
if [ -z ${src} ]; then
|
|
|
src="$(pwd)"
|
|
|
fi
|
|
|
fi
|
|
|
|
|
|
-
|
|
|
+
|
|
|
if [ -z ${dst} ]; then
|
|
|
- read -p "Destination [$(pwd)]: " dst
|
|
|
+ read -p "[ $(ts) ]: Destination [$(pwd)]: " dst
|
|
|
if [ -z ${dst} ]; then
|
|
|
dst="$(pwd)"
|
|
|
fi
|
|
@@ -56,68 +64,110 @@ fi
|
|
|
|
|
|
|
|
|
if [ -z ${note} ]; then
|
|
|
- read -p "Note of session/event: " note
|
|
|
+ read -p "[ $(ts) ]: Note of session/event: " note
|
|
|
if [ -z ${note} ]; then
|
|
|
note=""
|
|
|
else
|
|
|
-
|
|
|
+
|
|
|
note=" - ${note}"
|
|
|
fi
|
|
|
fi
|
|
|
|
|
|
|
|
|
if [ ${src} = ${dst} ]; then
|
|
|
- echo "Source and destination are the same, exiting..."
|
|
|
+ echo "[ $(ts) ]: Source and destination are the same, exiting..."
|
|
|
exit 2
|
|
|
fi
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-
|
|
|
-echo "Source: [${src}]"
|
|
|
-echo "Destination: [${dst}]"
|
|
|
-echo "Note: [${note}]"
|
|
|
|
|
|
-read -p "Confirm (Y): " confirm
|
|
|
-if [ ${confirm} = "Y" ]; then
|
|
|
- echo "Reading source and beginning to move..."
|
|
|
+echo "[ $(ts) ]: ----- [ Transfer details ] ---------------------------------------------"
|
|
|
|
|
|
-
|
|
|
- if ! [ -d ${src} ]; then
|
|
|
- echo "Source directory does not exist, exiting..."
|
|
|
- exit 2
|
|
|
- fi
|
|
|
+
|
|
|
+if [ -d "$src" ]; then
|
|
|
+
|
|
|
+ files_src_total_amount=0
|
|
|
+ files_src_total_size=0
|
|
|
+ for file in "$src"/*; do
|
|
|
+ file_size="$( stat -f %z "$file" )"
|
|
|
+
|
|
|
+ files_src_total_size=$(( $files_src_total_size+$file_size ))
|
|
|
+ files_src_total_amount=$(( $files_src_total_amount+1 ))
|
|
|
+ done
|
|
|
+ echo "[ $(ts) ]: Source: [${src}]"
|
|
|
+ echo "[ $(ts) ]: Total of $files_src_total_amount src files, total size is $(( $files_src_total_size/1024/1024 )) MB)."
|
|
|
+
|
|
|
+else
|
|
|
+ echo "[ $(ts) ]: src dir does not exist, exiting..."
|
|
|
+ exit 2
|
|
|
+fi
|
|
|
+
|
|
|
+echo "[ $(ts) ]: Destination: [${dst}]"
|
|
|
+echo "[ $(ts) ]: Note: [${note}]"
|
|
|
+
|
|
|
+
|
|
|
+read -p "[ $(ts) ]: Confirm (Y): " confirm
|
|
|
+if [ ${confirm} = "Y" ]; then
|
|
|
+ echo "[ $(ts) ]: Preparing to transfer..."
|
|
|
|
|
|
|
|
|
- if [ -d ${dst} ]; then
|
|
|
- mkdir -p -m 700 ${dst}
|
|
|
+ if ! [ -d "$dst" ]; then
|
|
|
+ read -p "[ $(ts) ]: dst dir does not exist, do you want to create?" confirm
|
|
|
+ if [ ${confirm} = "Y" ]; then
|
|
|
+ mkdir -v -p -m 700 "$dst"
|
|
|
+ echo "[ $(ts) ]: dst dir created."
|
|
|
+ fi
|
|
|
fi
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+ files_copied_filenam=()
|
|
|
+ files_copied_total_size=0
|
|
|
+ files_error_filename=()
|
|
|
|
|
|
|
|
|
- for file in ${src}/*; do
|
|
|
- filename="$(basename ${file})"
|
|
|
+ for file in "$src"/*; do
|
|
|
+ echo "[ $(ts) ]: src dir: ["$src"]"
|
|
|
+
|
|
|
+ filename="$(basename "$file")"
|
|
|
|
|
|
- file_mdate="$( stat -f %Sm -t %Y-%m-%d ${file} )"
|
|
|
+ file_mdate="$( stat -f %Sm -t %Y-%m-%d "$file" )"
|
|
|
+ file_size="$( stat -f %z "$file" )"
|
|
|
|
|
|
- mkdir -p ${dst}/${file_mdate}
|
|
|
- echo "[ $(ts) ]: src file : [${filename}], modification date is: ${file_mdate}, size: 11.5 MB"
|
|
|
-
|
|
|
- echo "sha256sum: [$( shasum -a 256 ${file} )]"
|
|
|
- echo "dst dir: [${dst}/${file_mdate}]"
|
|
|
+ mkdir -p "$dst"/${file_mdate}
|
|
|
+ echo "[ $(ts) ]: src file : [${filename}], modification date is: ${file_mdate}, ( $(( ${file_size}/1024/1024 )) MB )"
|
|
|
+
|
|
|
|
|
|
-
|
|
|
- cp ${file} ${dst}/${file_mdate}
|
|
|
-
|
|
|
- echo "sha256sum: [$( shasum -a 256 ${dst}/${file_mdate}/${filename} )]"
|
|
|
+
|
|
|
+ src_hash=$( shasum -a 256 "$file" | cut -d ' ' -f 1)
|
|
|
+
|
|
|
+ echo "[ $(ts) ]: dst dir: ["$dst"/${file_mdate}]"
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+ echo "[ $(ts) ] copying.."
|
|
|
+ cp "$file" "$dst"/${file_mdate}
|
|
|
+
|
|
|
+
|
|
|
+ dst_hash=$( shasum -a 256 "${dst}/${file_mdate}/${filename}" | cut -d ' ' -f 1)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if [ ${src_hash} = ${dst_hash} ]; then
|
|
|
+
|
|
|
+ files_copied_filename+=("$filename")
|
|
|
+ files_copied_total_size+=$file_size
|
|
|
+
|
|
|
+
|
|
|
+ echo "[ $(ts) ]: src and dst hashes are the same, removing src file"
|
|
|
+ rm "${file}"
|
|
|
+ else
|
|
|
+ echo "[ $(ts) ]: src and dst hashes are different."
|
|
|
+ files_error_filename+=("$file")
|
|
|
+ fi
|
|
|
|
|
|
|
|
|
|
|
@@ -141,13 +191,6 @@ if [ ${confirm} = "Y" ]; then
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
else
|
|
|
|