Szeretnék tar-ral és a find paranccsal naponta backupot készíteni! A find -mtime -1 | tar cf backup.tar -T - parancs hatására azonban azokat is archiválja, amiket nagyon nem kellene, és gondolom ezt a . miatt teszi. Azonban ha a tar-t kiegészítem az --exclude . -tal, akkor a backup.tar üresen jön létre. Mi lehet a megoldás?
Előre is köszönöm!
- 1552 megtekintés
Hozzászólások
Miért van az, hogy nem tudopk új témát indítani?
- A hozzászóláshoz be kell jelentkezni
mert a rendszer erzi, hogy hulyeseget akarsz kerdezni.
t
- A hozzászóláshoz be kell jelentkezni
amugy szeritem man find, man tar, google is segit, ha okosat kerdezel tole.
t
- A hozzászóláshoz be kell jelentkezni
Azokat már próbáltam. A -T hatására elvileg fájlból kellene beolvasni az archiválandó fájlok nevét. És sajnos ott van a . is.
Amikor a .-ot archiválja, akkor viszont húzza az összes benne lévő alkönyvtárat is, amit természetesen nem szeretnék.
Én csak a --exclude FILE-t találtam, de ezt alkalmazva a .-ra, üres archívumot hoz létre.
Te egyébként hogyan oldanád meg ezt a problémát?
- A hozzászóláshoz be kell jelentkezni
Hagyd, ma nincs jo hangulatban.
--------------------------
Debian lenny, 2.6.22-3
- A hozzászóláshoz be kell jelentkezni
A végén majd gondosan teszteld le szóközt tartalmazó fájlnevekkel is azt amit összelapátolsz. Én egyszer nagyon megszivtam ennek az elmaradását :(
---
Mondjon le!
- A hozzászóláshoz be kell jelentkezni
számtalan megoldás van, én igy oldottam meg:
#!/bin/bash
bzipped=/mnt/raid/fullbackup/napi/log
nyers=/mnt/raid/fullbackup/napi/log/nyers/
cd $bzipped
DATUM=`date`
date=`date '+%Y-%m-%d_%H'`
echo "Mentés indítása: $DATUM"
echo ""
# Befejezett logok atmentese | a mintan kivul (mysql) mindent kiprintelek
for logfiles in `find /var/log/ -name '*.[0-9]*' | grep -v /var/log/mysql/`; do
mv $logfiles $nyers
# echo "$logfiles"
done
# rendszer altal betomoritett logok
for logfiles in `find /var/log/ -name '*.[0-9].gz'`; do
mv $logfiles $nyers
done
# Folyamatos logok atmentese
cp /var/log/xferlog $nyers
echo "0" > /var/log/xferlog
cp /var/log/ftp_access.log $nyers
echo "0" > /var/log/ftp_access.log
cp /var/log/ftp_auth.log $nyers
echo "0" > /var/log/ftp_auth.log
cp /var/log/ftp_paranoid.log $nyers
echo "0" > /var/log/ftp_paranoid.log
cp /var/log/php/phperror.log $nyers
echo "0" > /var/log/php/phperror.log
echo Ossz_meret: `du -sh $nyers`
tar -zcvf $date-log.tar.gz $nyers
echo Tomoritve: `du -h $date-log.tar.gz | awk {'print $1'}`
rm -f $nyers/*
DATUM=`date`
echo "Mentés befejezve: $DATUM"
- A hozzászóláshoz be kell jelentkezni
Használd a tar cf backup.tar $(find /home/user/mittomén/ -mtime -1 -print0) parancsot. Én is beleszaladtam már (mint gondolom mások is), hogyha lehagyjuk, a keresés helyét, akkor a "." fájl is belekerül a tarba. Valamint a csövek helyett érdemes észrevenni, hogy több becsomagolandó fájlt is meg lehet adni a tarnak.
- A hozzászóláshoz be kell jelentkezni
Nem mai topic, de en is eppen ezzel szivtam. Majdnem elfogyott a hely, mire feltunt, hogy picit nagy lesz a tar.gz merete :) Sztem a megoldas a tar egyik opcioja (hogy mik vannak...)
-type f
Es igy konyvtarakat mar nem csomagol, csak fileokat.
- A hozzászóláshoz be kell jelentkezni
Ez nem pont az eredeti kerdesre valasz (bar igazabol a kerdezo nem arulta el, hogy pontosan mit szeretne a backupban latni :-), de ha csak a ./-t akarja kihagyni, akkor ilyesmi kell:
GNU finddal: find -mindepth 1 -mtime -1 | tar ...
nem GNU finddal: find -mtime -1 | grep -v '^\.$' | tar ...
- A hozzászóláshoz be kell jelentkezni
Amit te mondasz, az find.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Jaigen, arra gondoltam. Nem vagyok ma a topon...
- A hozzászóláshoz be kell jelentkezni