Compare commits
1 commit
master
...
newtype/di
Author | SHA1 | Date | |
---|---|---|---|
e95153ca64 |
3 changed files with 77 additions and 0 deletions
43
type/__dirbackup/man.rst
Normal file
43
type/__dirbackup/man.rst
Normal file
|
@ -0,0 +1,43 @@
|
|||
cdist-type__dirbackup(7)
|
||||
========================
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type__dirbackup - Periodically tar a directory somewhere else.
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
This type writes a script to tar a directory somewhere else accessible through
|
||||
a filesystem, keeping only copies older than the requested days. The source
|
||||
directory (or file, the type doesn't actually make a difference) to be targz'd
|
||||
is expected as "$__object_id".
|
||||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
|
||||
destination
|
||||
The directory in which the backups are to be copied. Expects an absolute
|
||||
path. It will be created if it does not exist, but beware as it will then
|
||||
have cdist's default restrictive permissions.
|
||||
|
||||
frequency
|
||||
The directory in `/etc/periodic` to link the backup script to. Usual existing
|
||||
values are `15mn`, `hourly`, `daily`, `weekly`, `monthly`. Values here depend
|
||||
on your distribution an cron setup; this type currently only supports Alpine
|
||||
Linux, who's default values are the above mentioned.
|
||||
|
||||
keep
|
||||
The amount of days to keep data. A natural integer is expected, it is
|
||||
directly passed on to the `-mtime` argument of `find(1)`.
|
||||
|
||||
AUTHORS
|
||||
-------
|
||||
Joachim Desroches <joachim.desroches@epfl.ch>
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2020 Joachim Desroches. You can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
31
type/__dirbackup/manifest
Normal file
31
type/__dirbackup/manifest
Normal file
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
|
||||
os="$(cat "${__global:?}"/explorer/os)"
|
||||
|
||||
case "$os" in
|
||||
alpine)
|
||||
:
|
||||
;;
|
||||
*)
|
||||
echo "This type has no implementation for $os. Aborting." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
scriptname="dirbackup-$(dd if=/dev/random bs=1 count=16 | tr -dC '[:alnum:]')"
|
||||
|
||||
destination="$(cat "${__object:?}/parameter/destination")"
|
||||
frequency="$(cat "${__object:?}/parameter/frequency")"
|
||||
keep="$(cat "${__object:?}/parameter/keep")"
|
||||
src="/${__object_id:?}"
|
||||
|
||||
srcstrip="$(basename "$src")"
|
||||
|
||||
__directory "$destination" --parents
|
||||
__file "/etc/periodic/$frequency/$scriptname" \
|
||||
--mode 0755 \
|
||||
--source - <<- EOF
|
||||
#!/bin/sh
|
||||
tar -czpf "$destination/$srcstrip-\$(date -I).tar.gz" -C '$(dirname "$src")' '$srcstrip'
|
||||
find '$destination' -mtime '$keep' -exec rm {} \;
|
||||
EOF
|
3
type/__dirbackup/parameter/required
Normal file
3
type/__dirbackup/parameter/required
Normal file
|
@ -0,0 +1,3 @@
|
|||
frequency
|
||||
destination
|
||||
keep
|
Loading…
Reference in a new issue