Como converter meu backup.cmd em algo que eu possa rodar no Linux?

0

De volta ao dia, quando eu estava usando o windows (e um noob em tudo de TI) eu gostava de scripts em lote tanto que eu escrevi muitos deles e um eu estou muito orgulhoso de que é meu backup.cmd (veja abaixo) .

Eu sou bastante básico com o bash sudo / apt-get / sl / ls / locate / updateb / etc do linux do Linux ...

Eu realmente não conheço o poder total do terminal. Se você ver o código abaixo eu posso fazê-lo funcionar em (Ubuntu) linux :) reescrevendo parte do código do windows com o equivalente do linux (btw: isto funciona sob xp / vista / 7 | dutch / english)

@echo off
title back it up
:home
cls
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º                                                      º
echo º typ A/B for the options                              º
echo º                                                      º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º                                                      º
echo º "A"=backup options                                   º
echo º                                                      º
echo º "B"=HARDDISK Options                                 º
echo º                                                      º
echo º                                                      º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ
set /p selection=Choose:
Goto %selection%
:A
cls
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º                                                      º
echo º typ 1 to start that backup                           º
echo º                                                      º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º                                                      º
echo º "A"=backup options                                   º
echo º  È1=Documents,Pictures,Music,Videos,Downloads        º
echo º                                                      º
echo º "B"=HARDDISK Options                                 º
echo º                                                      º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ
set /p selection=Choose:
Goto %selection%
:B
cls
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º                                                      º
echo º typ HD to start the disk check                       º
echo º                                                      º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º                                                      º
echo º "A"=backup options                                   º
echo º                                                      º
echo º "B"=HARDDISK Options                                 º
echo º  ÈHD=find and repair bad sectors                     º
echo º                                                      º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ
set /p selection=Choose:
Goto %selection%

:1
cls
if exist "%userprofile%\desktop" (set desk=desktop) else (set desk=Bureaublad)
if exist "%userprofile%\documents" (set docs=documents) else (set docs=mijn documenten)
if exist "%userprofile%\pictures" (set pics=pictures) else (echo cant find %userprofile%\pictures)
if exist "%userprofile%\music" (set mus=music) else (echo cant find %userprofile%\music)
if exist "%userprofile%\Videos" (set vids=videos) else (echo cant find %userprofile%\videos)
if exist "%userprofile%\Downloads" (set down=downloads) else (echo cant find %userprofile%\Downloads)
cls
echo. examples (D:\) (D:\Backup) (D:\Backup-4-2011)
echo.
echo. if there is no "D:\backup" folder then the folder will be created
echo. 
set drive=
set /p drive=storage:
echo start>>backup.log
echo Name:%username%>>backup.log
echo Date:%date%>>backup.log 
echo Time:%time%>>backup.log
echo ========================================%docs%===========================================>>backup.log
echo %docs%  
echo Source:"%userprofile%\%docs%" 
echo Destination:"%drive%\%username%\%docs%"
echo %time%>>backup.log
xcopy "%userprofile%\%docs%" "%drive%\%username%\%docs%" /E /I>>Backup.log
echo 20%%
cls
echo ========================================"%pics%"=========================================>>backup.log
echo "%pics%" 
echo Source:"%userprofile%\%pics%" 
echo Destination:"%drive%\%username%\%pics%"
echo %time%>>backup.log
xcopy "%userprofile%\%pics%" "%drive%\%username%\%pics%" /E /I>>Backup.log
echo 40%%
cls
echo ========================================"%mus%"=========================================>>backup.log
echo "%mus%" 
echo Source:"%userprofile%\%mus%" 
echo Destination:"%drive%\%username%\%mus%" 
echo %time%>>backup.log
xcopy "%userprofile%\%mus%" "%drive%\%username%\%mus%" /E /I>>Backup.log
echo 60%%
cls
echo ========================================"%vids%"========================================>>backup.log
echo %vids% 
echo Source:"%userprofile%\%vids%" 
echo Destination:"%drive%\%username%\%vids%"
echo %time%>>backup.log
xcopy "%userprofile%\%vids%" "%drive%\%username%\%vids%" /E /I>>Backup.log
echo 80%%
cls
echo ========================================"%down%"========================================>>backup.log
echo "%down%" 
echo Source:"%userprofile%\%down%" 
echo Destination:"%drive%\%username%\%down%"
echo %time%>>backup.log
xcopy "%userprofile%\%down%" "%drive%\%username%\%down%" /E /I>>Backup.log
echo end>>backup.log
echo %username% %date% %time%>>backup.log
echo 100%%
cls
echo backup Compleet

copy "backup.log" "%drive%\%username%"
del "backup.log"
pushd "%drive%\%username%"
echo close backup.log to continue with backup script
"backup.log"
echo press any key to retun to the main menu
pause>nul
goto :home

:HD
echo finds and repairs bad sectors
echo typ in harddisk letter (C: D: E:)
set HD=
set /p HD=Hard Disk:
chkdsk %HD% /F /R /X
pause
goto :home
    
por blade19899 12.04.2012 / 21:04

3 respostas

1

Seria muito parecido, mas você terá que mudar muita sintaxe. execute man bash e man cp para muitas informações. Para este script, cp é o comando que faz a maior parte do seu trabalho pesado. Ele substituirá copy e xcopy. Eco ainda é eco. Você pode escrever no seu log com o > > > ' operador.

O Bash é bem legal porque você pode definir funções e usar instruções reais se if(...){... } else{ ...} em vez de if ... goto (você ainda pode usar rótulos se realmente quiser). Tente aprender bash apenas como você aprendeu lote, e divirta-se encontrar o caminho de volta. Você ficará feliz em ter tempo para reescrever este roteiro a partir do zero e aprenderá sobre muitas novas ferramentas.

    
por Owen Johnson 12.04.2012 / 22:22
0

Eu recomendaria que você se familiarizasse com o Python. É uma linguagem muito agradável e fácil de aprender. Não compila ou qualquer coisa assim. No entanto, ele possui bibliotecas que permitem fazer qualquer coisa que você queira fazer.

Então, você pode querer primeiro uma substituição baseada em texto para o seu script atual. Então, mais tarde, você pode adicionar uma GUI para isso. É fácil. Claro, Bash é útil também, mas mais limitado. Se você for aprender apenas um novo idioma, eu absolutamente recomendaria o Python. Mas, claro, não há nada de errado em aprender Bash e Python:)

    
por Jo-Erlend Schinstad 12.04.2012 / 22:33
0

Acho que a maioria das pessoas sugeriria "rsync", que é basicamente a coisa mais próxima do Microsoft RoboCopy:

link

Esse arquivo de lote está basicamente exagerando um pouco, IMHO.

    
por djangofan 13.04.2012 / 00:11