-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproject
More file actions
executable file
·136 lines (122 loc) · 2.62 KB
/
Copy pathproject
File metadata and controls
executable file
·136 lines (122 loc) · 2.62 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash
ME=$(hostname)
SERVER=nas
REMOTELOCAL=/data/Projects
PROJECT=$1
TMPFILE=/tmp/projectsync.$$
DATE=$(date '+%d-%m-%y_%H-%M')
SCRIPT=$(basename $0)
push() {
if [ -d $HOME/Projects ]
then
cd $HOME/Projects
else
echo "there are no projects to push"
exit 1
fi
if [ -z $1 ]
then
echo "Please nominate a project to push"
exit 1
fi
cd $HOME/Projects
if [ -d $1 ]
then
if ( $(ssh $SERVER "[ -d $REMOTELOCAL/$1 ]") )
then
echo "Backing up this project on $SERVER"
ssh $SERVER "cd $REMOTELOCAL; [ -d $1 ] && tar zcfp projectbackup/$1-$DATE.tgz $1"
rsync -rvPe ssh $1/ $SERVER:$REMOTELOCAL/$1/ --delete
else
echo "project does not exist on $SERVER"
echo "if this is a new project, please use \"project add\" first"
exit 2
fi
else
echo "No project \"$1\" exists"
echo "Here are the available projects:"
ls | grep -v projectbackup
exit 2
fi
}
add() {
if [ -d $HOME/Projects ]
then
cd $HOME/Projects
else
echo "there are no projects to push"
exit 1
fi
if [ -z $1 ]
then
echo "Please nominate a project to push"
exit 1
fi
cd $HOME/Projects
if [ -d $1 ]
then
if $(ssh $SERVER "cd $REMOTELOCAL; [ -d $1 ]")
then
echo "Cannot add $1. It already exists"
else
rsync -rvPe ssh $1/ $SERVER:$REMOTELOCAL/$1/
fi
else
echo "No project \"$1\" exists"
echo "Here are the available projects:"
ls | grep -v projectbackup
exit 2
fi
}
pull() {
if [ -d $HOME/Projects/$1 ]
then
cd $HOME/Projects
[ -d projectbackup ] || mkdir projectbackup
tar zcfp projectbackup/$1_$DATE.tgz $1
fi
rsync -rvPe ssh $SERVER:$REMOTELOCAL/$1 $HOME/Projects/ --delete
}
diff() {
rsync --delete -rvne ssh $HOME/Projects/$1 $SERVER:$REMOTELOCAL/
}
list() {
echo "Available on the server:"
ssh $SERVER "cd $REMOTELOCAL; ls -d *"
echo ""
echo "Locally:"
cd $HOME/Projects
ls -d *
}
usage() {
echo "Usage: $SCRIPT action projectname"
echo " or: $SCRIPT list"
echo "Actions = add, pull, push, diff"
exit 3
}
if [ $# -eq 0 ]
then
usage
fi
if [ $# -eq 1 ] && ! [ $1 == "list" ]
then
usage
fi
if [ $# -gt 2 ]
then
usage
fi
case $1 in
add)
add $2;;
pull)
pull $2;;
push)
push $2;;
diff)
diff $2;;
list)
list;;
*)
usage;;
esac