-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharchivedirs.sh
More file actions
executable file
·86 lines (74 loc) · 2.11 KB
/
archivedirs.sh
File metadata and controls
executable file
·86 lines (74 loc) · 2.11 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
#!/bin/bash
controlc() {
exit 1
}
trap controlc SIGINT
ARCHIVE_DESTINATION=${1:-.}
SKIPKEYWORD=".ipynb_checkpoints"
# check destination
if [ ! -d "$ARCHIVE_DESTINATION" ]; then
read -p "Destination $ARCHIVE_DESTINATION does not exist. Create it? [y/n] " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
mkdir -p "$ARCHIVE_DESTINATION"
else
echo "Exiting..."
exit 1
fi
fi
# archive
declare -a alldirs
IFS=$'\n'
for line in $(find . -maxdepth 1 -type d 2>/dev/null | grep -v "$SKIPKEYWORD" | grep -v "^\.$" | grep -v "^\.\.$" | sort -n); do
alldirs+=("$line")
done
echo "dir count: ${#alldirs[@]}"
echo "${alldirs[@]}"
echo "archive to $ARCHIVE_DESTINATION"
read -p "Press enter to continue"
for onedir in "${alldirs[@]}"; do
echo "Archiving $onedir..."
if [ -f "$ARCHIVE_DESTINATION/$onedir.tar" ]; then
rm -f "$ARCHIVE_DESTINATION/$onedir.tar"
fi
onedir=$(basename "$onedir")
tar -cf "$ARCHIVE_DESTINATION/$onedir.tar" "$onedir"
done
# list archives
# declare -a archivefiles
# IFS=$'\n'
# for line in $(find "$ARCHIVE_DESTINATION" -type f -name "*.tar" 2>/dev/null | sort -n); do
# archivefiles+=("$line")
# done
# test
# for onearchive in "${archivefiles[@]}"; do
# echo -n "Testing $onearchive..."
# tar -tf "$onearchive" >/dev/null 2>&1
# if [ $? -ne 0 ]; then
# echo -e "\n File $onearchive is corrupted" | tee -a archiveswitherrors.txt
# else
# echo -n "."
# fi
# done
# merge
# firstarchive=${archivefiles[0]}
# for ((i = 1; i < ${#archivefiles[@]}; i++)); do
# if [ $(tar -tf "${archivefiles[$i]}" | wc -l) -eq 0 ]; then
# echo "del empty: ${archivefiles[$i]}"
# rm "${archivefiles[$i]}"
# continue
# fi
# tar -Af "$firstarchive" "${archivefiles[$i]}"
# rm -f "${archivefiles[$i]}"
# done
# mv "$firstarchive" "merged.tar"
# echo "chunks in the archive:" $(tar -tf "merged.tar" | wc -l)
#delete dirs
# for onedir in ${alldirs[@]}; do
# rm -rf "$onedir"
# echo "Deleting $onedir..."
# done
#extract
# for onearchive in ${archivefiles[@]}; do
# tar -xf "$onearchive"
# done