This commit is contained in:
commit
0fdfbb4a08
42
bup-backup
Normal file
42
bup-backup
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env nix-script
|
||||||
|
#!>haskell
|
||||||
|
#! shell | bup git
|
||||||
|
#! env | BUP_DIR
|
||||||
|
#! haskell | shell-conduit filepath
|
||||||
|
|
||||||
|
import Data.List (intersperse)
|
||||||
|
import Data.Conduit.Shell
|
||||||
|
import Data.Conduit.Shell.Segments (strings)
|
||||||
|
import Data.Conduit.Shell.Variadic (variadicProcess)
|
||||||
|
import System.FilePath
|
||||||
|
|
||||||
|
|
||||||
|
excluded :: [String]
|
||||||
|
excluded = intersperse "--exclude"
|
||||||
|
[ "/home/rnhmjoj/.cache/"
|
||||||
|
, "/home/rnhmjoj/games/"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = run (strings (bup "ls") >>= mapM_ backup)
|
||||||
|
|
||||||
|
|
||||||
|
findPath :: String -> Segment FilePath
|
||||||
|
findPath path = do
|
||||||
|
files <- strings (bup "ls" path)
|
||||||
|
if length files /= 1
|
||||||
|
then return ("/" </> final path)
|
||||||
|
else findPath (path </> head files)
|
||||||
|
where final = concat . drop 2 . splitPath
|
||||||
|
|
||||||
|
|
||||||
|
backup :: String -> Segment ()
|
||||||
|
backup name = do
|
||||||
|
path <- findPath (name </> "latest")
|
||||||
|
proc "bup" ("index" : "-v" : path : "--exclude" : excluded)
|
||||||
|
bup "save" "-n" name path
|
||||||
|
|
||||||
|
|
||||||
|
bup :: ProcessType r => String -> r
|
||||||
|
bup = variadicProcess "bup"
|
Loading…
Reference in New Issue
Block a user