blob: 5165a52feee157fe57b23e32e32f54c1ebb69eda (
plain)
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
|
#!/bin/bash
#
# Recursively compress any files greater than a supplied MINSIZE (-s), starting
# from the supplied DIRECTORY (-d).
#
error() {
echo "Error: $1"
exit 1
}
usage() {
echo "Usage: $0 <options>
Where <options> include:
-d DIRECTORY - Specify directory to recurse
-s MINSIZE - Minimum file size in MiB to compress
-n - Don't make changes, just display
"
exit 1
}
# Initialize variables
COMPRESS_SUFFIX=".gz"
COMPRESS_CMD="gzip -v --suffix ${COMPRESS_SUFFIX}"
# Process cmdline arguments
DRYRUN=0
MINSIZE=""
COMPRESS_DIR=""
while getopts "ns:d:h" options; do
case $options in
n ) DRYRUN=1 ;;
s ) MINSIZE=$OPTARG ;;
d ) COMPRESS_DIR=$OPTARG ;;
\?|h ) usage ;;
* ) usage ;;
esac
done
# Validate input
test -z "${COMPRESS_DIR}" && error "Missing -d argument"
test -z "${MINSIZE}" && error "Missing -s argument"
# Find files to compress using the supplied arguments
find "${COMPRESS_DIR}" -type f -not -name "*${COMPRESS_SUFFIX}" -size +"${MINSIZE}"M |
while read line
do
if [ ${DRYRUN} -eq 1 ]; then
echo "\$ ${COMPRESS_CMD} ${line}"
echo "\$ ln -s $(basename $line).gz ${line}"
else
${COMPRESS_CMD} ${line}
# Create symlink to original file
ln -s $(basename $line).gz ${line}
fi
done
|