
Záloha souborů - FORFILES + 7zip
Donedávna jsem řešil denní zálohu dat z PC dávkovým souborem pomocí DOSového prográmku pkzip.exe, který pomocí přepínače umí z daného umístění "vyzobat" všechny soubory s datumem shodným se systémovým datem (resp. soubory změněné v aktuální den).
Po přechodu na Win7 64b pkzip nelze použít, tak se to pokouším řešit pomocí příkazu FORFILES a 7za.exe (=command line verze 7zip), ale stále mě to neposlouchá a nevím, kde je zakopaný pes.
Pokud by byl někdo ochoten poradit, byl bych moc rád.
Zadání je tedy:
Z daného adresáře (včetně podadresářů) vybrat všechny soubory s aktuálním datem změny a zabalit je do zip souboru včetně plných cest odpovídajících zdrojové adresářové struktuře.
Děkuji
Mám dojem(?), že 7-zip neumí vybírat soubory podle datumu. Tak bych to obešel.
Soubory se systémovým datem vybereš:
FORFILES /D 0
Ty bych někam (dočasně) nakopíroval, pak na ně pustil 7-zip a všechny zazálohoval. Po záloze dočasný adresář smazal.
Vím, je to delší než kdyby to šlo najednou.
Ono by to mělo jít i najednou,
forfiles /p "c:\Aktual" /s /d 0 /c "cmd /c C:\Utils\7zip\7za u -tzip C:\A\Day_zal1.zip @PATH -mmt"
ale stále se mi to chová nějak podivně. Myslím, že problém je v tom parametru /D 0, zdá se mi, že to vybírá pokaždý něco jinýho
problém je v tom, že otevíráš pro každý soubor novou instanci cmd.exe a velmi pravděpodobně narážíš na problém otevřeného souboru archivu pro zápis, což lze v jednom okamžiku pouze v jedné instanci. Proto, dle mého mínění, je pak v archivu "náhodný" vzorek souborů.
edit: tady jsem našel řešení někoho jiného: http://superuser.com/questions/443729/windows-batc h-file-7-zip-archive-files-using-date-range
Díky, to řešení v odkazu jsem taky našel, ale nefunguje. Vypíše, že nebyly nalezeny soubory splňující kritérium hledání (ale v daném umístění existuje soubor s dnešním datem).
pak ale máš problém s forfiles. Já se musím přiznat, že mi vždy fungovaly..
Jo, jo, problém tam každopádně nějaký je, ale já už si s tím nevím rady.
Teď už jen doufám, že někdo, kdo s tou syntaxí má zkušenosti, sem nějaké řešení dle zadání předloží.
v první řadě si odlaď ten "vnější" forfiles, např. tak, že budeš vytvářet echem s přesměrováním do souboru seznam, aby sis ověřil, že to funguje:
edit: pak můžeš přikročit k řešení samotné archivace.
Tohle mi vypisuje přesně to, co potřebuju, ale nejde mi to nějak spojit s tou archivací
forfiles /p "c:\Aktual" /s /d 0 /C "cmd /c echo @path"
cesty si přepiš podle sebe, 7-zip mám aktuální verzi 15.12 kde už není 7za ale jen 7z.
mě to funguje...
[url=http://del %TEMP%\seznam-k-zalohovani.lst
forfiles /p "r:\Test" /M *.* /s /d 0 /c "cmd /c echo @PATH >> %TEMP%\seznam-k-zalohovani.lst"
"c:\Program Files\7-Zip\7z.exe" a -r -tzip -scsDOS -spf2 r:\Moje-zaloha.zip @%TEMP%\seznam-k-zalohovani.lst
]del %TEMP%\seznam-k-zalohovani.lst
forfiles /p "r:\Test" /M *.* /s /d 0 /c "cmd /c echo @PATH >> %TEMP%\seznam-k-zalohovani.lst"
"c:\Program Files\7-Zip\7z.exe" a -r -tzip -scsDOS -spf2 r:\Moje-zaloha.zip @%TEMP%\seznam-k-zalohovani.lst
[/url]
tak se opět potvrdilo že v každém programu je alespoň jedna chyba
u toho forfiles přidej ještě parametr /M *.*
tím docílíš aby v seznamu nebyly i názvy samotných podadresářů.
7-zip jak vidí název podadresáře tak tam potom sype i celý jeho obsah.
Takhle budou v seznamu jen názvy jednotlivých souborů...
Díky moc! Vidím, že se tím vážně zabýváš.
Cesty jsem změnil a píše mi to "Incorrect command line"
Napadá mě, jestli by to nemohlo být mojí verzí 7-zip, ale nerad bych instaloval celej novej 7zip. Nedalo by se poslat mi jen ten 7z.exe z tvé verze (tedy pokud jseš ochote a pokud to podle tebe může být řešením)
hrochoroh<zavináč>seznam.cz
-spf přepínač je až z novějších verzí, proto ta chyba.
7z.exe v15.12
a nějakého MODa prosím ať tento post za nějaký čas smaže
ajaj, chybí mu ještě 7z.dll (tedy jestli se mnou budeš mít ještě trpělivost - když tak můžeš na mail hrochoroh<zavinac>seznam.cz)
installer přímo od zdroje
7z1512-x64.exe
a pokud ho nechceš přímo nainstalovat,
tak si z něj vytáhneš všechny potřebné soubory (jak jinak než 7-zipem, je to v podstatě instalátor postavený na sfx 7z).
Funguje! Jsi génius, tisíceré díky!!!
Zkusil jsem tohle
forfiles /p "c:\Aktual" /M *.* /s /d 0 /c "cmd /c C:\Utils\7zip\7za u -tzip C:\A\Day_zal1.zip @PATH"
a je to funkční, akorát v cílovém ZIPu jsou ty soubory bez adresářové struktury.
na to potřebuješ nejnovější 7z který má ten -spf switch
v téhle příkazové řádce voláš 7zip k updatování archivu tolikrát, kolik máš souborů k zálohování.
raději to udělej přes ten seznam na jeden zátah.
nic neposílej, stáhl jsem si portable a jdu zkoušet....