forked from viljaste/ftp-export
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathftp-export.sh
More file actions
executable file
·97 lines (65 loc) · 1.71 KB
/
ftp-export.sh
File metadata and controls
executable file
·97 lines (65 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/usr/bin/env bash
WORKING_DIR="$(pwd)"
help() {
cat << EOF
ftp-export: Usage: ftp-export <SOURCE> <HOSTNAME> <USERNAME> <PASSWORD> <DESTINATION> [REMOTE_DIRECTORY]
EOF
exit 1
}
if [ "${1}" == "-h" ] || [ "${1}" == "--help" ]; then
help
fi
unknown_command() {
echo "ftp-export: Unknown command. See 'ftp-export --help'"
exit 1
}
if [ "${#}" -lt 5 ] || [ "${#}" -gt 6 ]; then
unknown_command
fi
SOURCE="${1}"
if [ ! -d "${SOURCE}" ]; then
echo "svn-export: Source directory doesn't exist: ${SOURCE}"
exit 1
fi
mkdir -p "${SOURCE}"
cd "${SOURCE}"
SOURCE="$(pwd)"
cd "${WORKING_DIR}"
DESTINATION="${5}"
if [ -d "${DESTINATION}" ]; then
echo "svn-export: Destination directory already exists: ${DESTINATION}"
exit 1
fi
mkdir -p "${DESTINATION}"
cd "${DESTINATION}"
DESTINATION="$(pwd)"
REMOTE_DIRECTORY=""
if [ "${#}" -gt 5 ]; then
REMOTE_DIRECTORY="${6}"
if [ "${REMOTE_DIRECTORY:$((${#REMOTE_DIRECTORY} - 1)):1}" != "/" ]; then
REMOTE_DIRECTORY="${REMOTE_DIRECTORY}/";
fi
fi
HOSTNAME="${2}"
USERNAME="${3}"
PASSWORD="${4}"
for FILE in $(find "${SOURCE}" -type f); do
RELATIVE_PATH="${FILE/${SOURCE}}"
if [ "${RELATIVE_PATH:0:1}" == "/" ]; then
RELATIVE_PATH="$(echo ${RELATIVE_PATH} | cut -c 2-)"
fi
DIRECTORY="$(dirname ${RELATIVE_PATH})"
if [ ! -d "${DIRECTORY}" ]; then
mkdir -p "${DIRECTORY}"
fi
wget -q "ftp://${USERNAME}:${PASSWORD}@${HOSTNAME}/${REMOTE_DIRECTORY}${RELATIVE_PATH}" -O "${RELATIVE_PATH}"
if [ "${?}" -ne 0 ]; then
rm -rf "${RELATIVE_PATH}"
if [ "${DIRECTORY}" != "." ] && [ ! "$(ls -A ${DIRECTORY})" ]; then
rm -rf "${DIRECTORY}"
fi
else
echo "ftp-export: Exporting file: ${RELATIVE_PATH}"
fi
done
cd "${WORKING_DIR}"