Compare commits
No commits in common. "f72ee7c85b2020f341d609d321eea6f501e3209c" and "1397e9c9a3196692a84db91101ee4a6eeffc7ceb" have entirely different histories.
f72ee7c85b
...
1397e9c9a3
4 changed files with 31 additions and 54 deletions
|
@ -1,9 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
USER="$1"
|
USER="$1"
|
||||||
|
SOURCEPATH="/var/lib/nextcloud/$1/files/$2"
|
||||||
REL_SOURCE_PATH="/$1/files/$2"
|
|
||||||
ABS_SOURCE_PATH="/var/lib/nextcloud/$1/files/$2"
|
|
||||||
|
|
||||||
REL_DEST_PATH="/$1/files/$3"
|
REL_DEST_PATH="/$1/files/$3"
|
||||||
ABS_DEST_PATH="/var/lib/nextcloud/$1/files/$3"
|
ABS_DEST_PATH="/var/lib/nextcloud/$1/files/$3"
|
||||||
|
@ -13,63 +11,52 @@ ABS_UNSORTABLE_PATH="/var/lib/nextcloud/$1/files/$4"
|
||||||
|
|
||||||
echo "STARTING..."
|
echo "STARTING..."
|
||||||
|
|
||||||
chown -R www-data:www-data "$ABS_SOURCE_PATH"
|
chown -R www-data:www-data "$SOURCEPATH"
|
||||||
chmod -R 770 "$ABS_SOURCE_PATH"
|
chmod -R 770 "$SOURCEPATH"
|
||||||
|
|
||||||
SCAN="FALSE"
|
SCAN="FALSE"
|
||||||
IFS=$'\n'
|
IFS=$'\n'
|
||||||
for f in `find "$ABS_SOURCE_PATH" -iname *.PNG -o -iname *.JPG -o -iname *.JPEG -o -iname *.HEIC -o -iname *.CR2 -o -iname *.CR3 -o -iname *.MP4 -o -iname *.MOV`; do
|
for f in `find "$SOURCEPATH" -iname *.PNG -o -iname *.JPG -o -iname *.HEIC -o -iname *.CR2 -o -iname *.CR3 -o -iname *.MP4 -o -iname *.MOV`; do
|
||||||
SCAN="TRUE"
|
SCAN="TRUE"
|
||||||
echo "PROCESSING: $f"
|
echo "PROCESSING: $f"
|
||||||
|
DATE=`exiftool "$f" | grep -m 1 "Create Date"`
|
||||||
EXIF=`exiftool "$f"`
|
if ! echo "$DATE" | grep "Create Date" >/dev/null
|
||||||
if grep -q '^Create Date' <<< $EXIF
|
|
||||||
then
|
then
|
||||||
DATETIME=`grep -m 1 "^Create Date" <<< $EXIF | cut -d: -f2- | xargs`
|
RELPATH=$(realpath --relative-to="$SOURCEPATH" "$f")
|
||||||
elif grep -q '^File Modification Date' <<< $EXIF
|
|
||||||
then
|
|
||||||
DATETIME=`grep -m 1 '^File Modification Date' <<< $EXIF | cut -d: -f2- | xargs`
|
|
||||||
else
|
|
||||||
RELPATH=$(realpath --relative-to="$ABS_SOURCE_PATH" "$f")
|
|
||||||
DIRNAME=$(dirname "$ABS_UNSORTABLE_PATH/$RELPATH")
|
DIRNAME=$(dirname "$ABS_UNSORTABLE_PATH/$RELPATH")
|
||||||
echo "UNSORTABLE: $f"
|
echo "UNSORTABLE: $f"
|
||||||
mkdir -p "$DIRNAME"
|
mkdir -p "$DIRNAME"
|
||||||
mv "$f" "$DIRNAME"
|
mv "$f" "$DIRNAME"
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
DATE=`cut -d' ' -f1 <<< $DATETIME`
|
|
||||||
TIME=`cut -d' ' -f2 <<< $DATETIME | cut -d'+' -f1`
|
|
||||||
|
|
||||||
YEAR=`cut -d':' -f1 <<< $DATE`
|
|
||||||
MONTH=`cut -d':' -f2 <<< $DATE`
|
|
||||||
DAY=`cut -d':' -f3 <<< $DATE`
|
|
||||||
HOUR=`cut -d':' -f1 <<< $TIME`
|
|
||||||
MINUTE=`cut -d':' -f2 <<< $TIME`
|
|
||||||
SECOND=`cut -d':' -f3 <<< $TIME`
|
|
||||||
|
|
||||||
HASH=`sha256sum "$f" | xxd -r -p | base64 | head -c 3 | tr '/+' '_-'`
|
|
||||||
EXT=`echo "${f##*.}" | tr '[:upper:]' '[:lower:]'`
|
|
||||||
if [[ "$EXT" = "cr2" ]] || [[ "$EXT" = "cr3" ]]
|
|
||||||
then
|
|
||||||
RAW="raw/"
|
|
||||||
else
|
else
|
||||||
RAW=""
|
YEAR=`echo $DATE | cut -d':' -f2 | cut -c 2-`
|
||||||
|
MONTH=`echo $DATE | cut -d':' -f3`
|
||||||
|
DAY=`echo $DATE | cut -d':' -f4 | cut -d' ' -f1`
|
||||||
|
HOUR=`echo $DATE | cut -d':' -f4 | cut -d' ' -f2`
|
||||||
|
MINUTE=`echo $DATE | cut -d':' -f5`
|
||||||
|
SECOND=`echo $DATE | cut -d':' -f6`
|
||||||
|
SECOND=`echo $SECOND | cut -d'+' -f1` # remove timezone
|
||||||
|
HASH=`sha256sum "$f" | xxd -r -p | base64 | head -c 3 | tr '/+' '_-'`
|
||||||
|
EXT=`echo "${f##*.}" | tr '[:upper:]' '[:lower:]'`
|
||||||
|
if [[ "$EXT" = "cr2" ]] || [[ "$EXT" = "cr3" ]]
|
||||||
|
then
|
||||||
|
RAW="raw/"
|
||||||
|
else
|
||||||
|
RAW=""
|
||||||
|
fi
|
||||||
|
FILE="$ABS_DEST_PATH/$YEAR-$MONTH/$RAW$YEAR$MONTH$DAY"-"$HOUR$MINUTE$SECOND"_"$HASH"."$EXT"
|
||||||
|
echo "DESTINATION: $FILE"
|
||||||
|
mkdir -p "$(dirname "$FILE")"
|
||||||
|
mv -v "$f" "$FILE"
|
||||||
fi
|
fi
|
||||||
FILE="$ABS_DEST_PATH/$YEAR-$MONTH/$RAW$YEAR$MONTH$DAY"-"$HOUR$MINUTE$SECOND"_"$HASH"."$EXT"
|
|
||||||
echo "DESTINATION: $FILE"
|
|
||||||
mkdir -p "$(dirname "$FILE")"
|
|
||||||
mv -v "$f" "$FILE"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$SCAN" == "TRUE" ]; then
|
if [ "$SCAN" == "TRUE" ]; then
|
||||||
echo "SCANNING..."
|
echo "SCANNING..."
|
||||||
# find "$ABS_SOURCE_PATH/"* -type d -empty -delete >> /var/echo/nc-picsort.echo # nextcloud app bug when deleting folders
|
# find "$SOURCEPATH/"* -type d -empty -delete >> /var/echo/nc-picsort.echo # nextcloud app bug when deleting folders
|
||||||
chown -R www-data:www-data "$ABS_DEST_PATH"
|
chown -R www-data:www-data "$ABS_DEST_PATH"
|
||||||
chown -R www-data:www-data "$ABS_UNSORTABLE_PATH"
|
chown -R www-data:www-data "$ABS_UNSORTABLE_PATH"
|
||||||
chmod -R 770 "$ABS_DEST_PATH"
|
chmod -R 770 "$ABS_DEST_PATH"
|
||||||
chmod -R 770 "$ABS_UNSORTABLE_PATH"
|
chmod -R 770 "$ABS_UNSORTABLE_PATH"
|
||||||
sudo -u www-data php /opt/nextcloud/occ files:scan --path "$REL_SOURCE_PATH"
|
|
||||||
sudo -u www-data php /opt/nextcloud/occ files:scan --path "$REL_UNSORTABLE_PATH"
|
sudo -u www-data php /opt/nextcloud/occ files:scan --path "$REL_UNSORTABLE_PATH"
|
||||||
sudo -u www-data php /opt/nextcloud/occ files:scan --path "$REL_DEST_PATH"
|
sudo -u www-data php /opt/nextcloud/occ files:scan --path "$REL_DEST_PATH"
|
||||||
sudo -u www-data php /opt/nextcloud/occ preview:pre-generate
|
sudo -u www-data php /opt/nextcloud/occ preview:pre-generate
|
||||||
|
|
|
@ -4,7 +4,7 @@ from shlex import quote as q
|
||||||
defaults = {
|
defaults = {
|
||||||
'apt': {
|
'apt': {
|
||||||
'packages': {
|
'packages': {
|
||||||
'libimage-exiftool-perl': {},
|
'exiftool': {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,23 +4,14 @@ assert isinstance(size, int)
|
||||||
actions = {
|
actions = {
|
||||||
'stop_swap': {
|
'stop_swap': {
|
||||||
'command': f'systemctl stop swapfile.swap',
|
'command': f'systemctl stop swapfile.swap',
|
||||||
'unless': f'! systemctl is-active swapfile.swap',
|
'unless': f'rm /swapfile',
|
||||||
'triggered': True,
|
'triggered': True,
|
||||||
},
|
},
|
||||||
'remove_swapfile': {
|
|
||||||
'command': f'rm /swapfile',
|
|
||||||
'unless': f'! test -e /swapfile',
|
|
||||||
'triggered': True,
|
|
||||||
'needs': {
|
|
||||||
'action:stop_swap',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
'create_swapfile': {
|
'create_swapfile': {
|
||||||
'command': f'dd if=/dev/zero of=/swapfile bs={size} count=1',
|
'command': f'dd if=/dev/zero of=/swapfile bs={size} count=1',
|
||||||
'unless': f'stat -c %s /swapfile | grep ^{size}$',
|
'unless': f'stat -c %s /swapfile | grep ^{size}$',
|
||||||
'preceded_by': {
|
'preceded_by': {
|
||||||
'action:stop_swap',
|
'action:stop_swap',
|
||||||
'action:remove_swapfile',
|
|
||||||
},
|
},
|
||||||
'triggers': {
|
'triggers': {
|
||||||
'action:initialize_swapfile',
|
'action:initialize_swapfile',
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
'smartctl',
|
'smartctl',
|
||||||
'steam-chat-logger',
|
'steam-chat-logger',
|
||||||
'steam-chat-viewer',
|
'steam-chat-viewer',
|
||||||
'systemd-swap',
|
|
||||||
'raspberrymatic-cert',
|
'raspberrymatic-cert',
|
||||||
'tasmota-charge',
|
'tasmota-charge',
|
||||||
'wireguard',
|
'wireguard',
|
||||||
|
@ -84,6 +83,7 @@
|
||||||
'nextcloud': {
|
'nextcloud': {
|
||||||
'hostname': 'cloud.sublimity.de',
|
'hostname': 'cloud.sublimity.de',
|
||||||
'version': '24.0.2',
|
'version': '24.0.2',
|
||||||
|
'instance_id': 'oci6dw1woodz',
|
||||||
},
|
},
|
||||||
'nextcloud-picsort': {
|
'nextcloud-picsort': {
|
||||||
'ckn': {
|
'ckn': {
|
||||||
|
@ -107,7 +107,6 @@
|
||||||
'steam-chat-viewer': {
|
'steam-chat-viewer': {
|
||||||
'hostname': 'steam-chats.ckn.li',
|
'hostname': 'steam-chats.ckn.li',
|
||||||
},
|
},
|
||||||
'systemd-swap': 4*10**9,
|
|
||||||
'tasmota-charge': {
|
'tasmota-charge': {
|
||||||
'phone': {
|
'phone': {
|
||||||
'ip': '10.0.0.175',
|
'ip': '10.0.0.175',
|
||||||
|
@ -155,7 +154,7 @@
|
||||||
'/dev/disk/by-id/nvme-SAMSUNG_MZVL22T0HBLB-00B00_S677NF0RA01551-part3',
|
'/dev/disk/by-id/nvme-SAMSUNG_MZVL22T0HBLB-00B00_S677NF0RA01551-part3',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'datasets': {
|
'datasets': {
|
||||||
'ssd/nextcloud-appdata': {
|
'ssd/nextcloud-appdata': {
|
||||||
'mountpoint': '/var/lib/nextcloud/appdata_oci6dw1woodz',
|
'mountpoint': '/var/lib/nextcloud/appdata_oci6dw1woodz',
|
||||||
|
|
Loading…
Reference in a new issue