Sí, sou correcte en pensar que la creació d'un fitxer .BAT pot ser una manera de fer una còpia de seguretat automàtica de la vostra carpeta cada dia. Hi ha diverses alternatives que podeu considerar, depenent del vostre sistema operatiu i les vostres preferències personals. Aquí teniu algunes opcions per a Windows i Linux:
- Fitxer .BAT (Windows): Creeu un fitxer de text amb l'extensió .BAT i afegiu el següent codi:
bash@echo off
set source="ruta_de_la_carpeta_origen"
set destination="ruta_de_la_carpeta_destí"
set timestamp=%date:~10,4%%date:~4,2%%date:~7,2%
xcopy %source% %destination%\backup_%timestamp% /E /I /Y
Reemplaceu "ruta_de_la_carpeta_origen" i "ruta_de_la_carpeta_destí" amb les rutes de la vostra carpeta origen i destí. Després, afegiu aquest fitxer .BAT com a tasca programada al Planificador de tasques de Windows per executar-lo diàriament.
- PowerShell (Windows): Creeu un fitxer de script PowerShell (.ps1) amb el següent codi:
bash$source = "ruta_de_la_carpeta_origen"
$destination = "ruta_de_la_carpeta_destí"
$date = Get-Date -Format yyyyMMdd
Copy-Item -Path $source -Destination "$destination\backup_$date" -Recurse -Force
Reemplaceu "ruta_de_la_carpeta_origen" i "ruta_de_la_carpeta_destí" amb les rutes de la vostra carpeta origen i destí. Després, afegiu aquest fitxer .ps1 com a tasca programada al Planificador de tasques de Windows per executar-lo diàriament.
- Bash Script (Linux): Creeu un fitxer de script Bash (.sh) amb el següent codi:
bash#!/bin/bash
source="ruta_de_la_carpeta_origen"
destination="ruta_de_la_carpeta_destí"
date=$(date +"%Y%m%d")
cp -R "$source" "$destination/backup_$date"
Reemplaceu "ruta_de_la_carpeta_origen" i "ruta_de_la_carpeta_destí" amb les rutes de la vostra carpeta origen i destí. Feu que el fitxer sigui executable amb chmod +x nom_del_fitxer.sh
. Després, afegiu aquest script com a tasca programada amb cron
per executar-lo diàriament.
- rsync (Linux):
També podeu utilitzar l'eina
rsync
per fer còpies de seguretat incremental. Això pot ser més eficient si els canvis a la carpeta són petits cada dia. Creeu un fitxer de script Bash (.sh
D'acord, em centraré en les opcions disponibles per a Windows. Teniu dues opcions principals: utilitzar un fitxer .BAT o un script de PowerShell.
- Fitxer .BAT:
a) Creeu un fitxer de text amb l'extensió .BAT (per exemple, backup.bat) i afegiu el següent codi:
bash@echo off
set source="ruta_de_la_carpeta_origen"
set destination="ruta_de_la_carpeta_destí"
set timestamp=%date:~10,4%%date:~4,2%%date:~7,2%
xcopy %source% %destination%\backup_%timestamp% /E /I /Y
Reemplaceu "ruta_de_la_carpeta_origen" i "ruta_de_la_carpeta_destí" amb les rutes de la vostra carpeta origen i destí.
b) Desa el fitxer i tanqueu-lo.
c) Ara, configureu el Planificador de tasques de Windows per executar aquest fitxer .BAT diàriament:
- Obriu el Planificador de tasques: premeu la tecla de Windows, escriviu "Planificador de tasques" i premeu Enter.
- A l'apartat "Accions" (a la dreta), feu clic a "Crear tasca".
- Doneu-li un nom a la tasca (per exemple, "Copia de seguretat diària").
- A la pestanya "Disparadors", feu clic a "Nou" i configureu la programació per executar la tasca diàriament a l'hora desitjada.
- A la pestanya "Accions", feu clic a "Nou", seleccioneu "Iniciar un programa" i navegueu fins al fitxer .BAT que heu creat anteriorment.
- Feu clic a "D'acord" per desar la tasca.
- Script de PowerShell:
a) Creeu un fitxer de text amb l'extensió .ps1 (per exemple, backup.ps1) i afegiu el següent codi:
bash$source = "ruta_de_la_carpeta_origen"
$destination = "ruta_de_la_carpeta_destí"
$date = Get-Date -Format yyyyMMdd
Copy-Item -Path $source -Destination "$destination\backup_$date" -Recurse -Force
Reemplaceu "ruta_de_la_carpeta_origen" i "ruta_de_la_carpeta_destí" amb les rutes de la vostra carpeta origen i destí.
b) Desa el fitxer i tanqueu-lo.
c) Ara, configureu el Planificador de tasques de Windows per executar aquest fitxer .ps1 diàriament:
- Obriu el Planificador de tasques: premeu la
D'acord, repassarem el codi del fitxer .BAT pas a pas:
bat@echo off
Aquesta línia desactiva la visualització de les comandes que s'executen en la finestra de l'intèrpret de comandes. Això evita que les comandes s'escriguin a la pantalla quan s'executa el fitxer .BAT.
batset source="ruta_de_la_carpeta_origen"
Aquesta línia crea una variable anomenada source
i li assigna la ruta de la carpeta origen que voleu fer còpia de seguretat. Heu de reemplaçar "ruta_de_la_carpeta_origen" amb la ruta real de la carpeta que voleu fer còpia de seguretat.
batset destination="ruta_de_la_carpeta_destí"
Aquesta línia crea una variable anomenada destination
i li assigna la ruta de la carpeta destí on voleu emmagatzemar la còpia de seguretat. Heu de reemplaçar "ruta_de_la_carpeta_destí" amb la ruta real de la carpeta destí.
batset timestamp=%date:~10,4%%date:~4,2%%date:~7,2%
Aquesta línia crea una variable anomenada timestamp
que conté la data actual en format YYYYMMDD. El codi utilitza la variable %date%
per obtenir la data actual i extreure les parts necessàries (any, mes i dia) mitjançant la notació de subcadena.
batxcopy %source% %destination%\backup_%timestamp% /E /I /Y
Aquesta línia utilitza la comanda xcopy
per copiar tot el contingut de la carpeta origen (representada per la variable %source%
) a una nova carpeta a la carpeta destí (representada per la variable %destination%
). La nova carpeta de la còpia de seguretat tindrà un nom com "backup_YYYYMMDD", on YYYYMMDD és la data actual.
Els paràmetres de la comanda xcopy
són:
/E
: Copia tots els subdirectoris, inclosos els buits./I
: Si la destinació no existeix i es copia més d'un fitxer, assumeix que la destinació és una carpeta./Y
: Suprimeix la sol·licitud de confirmació per sobreescriure un fitxer existent a la destinació.
Amb aquest fitxer .BAT, cada vegada que s'executi, es crearà una còpia de seguretat de la carpeta origen a la carpeta destí amb un nom basat en la data actual.
Sí, podeu modificar el fitxer .BAT per copiar només els arxius modificats durant les últimes 24 hores. Podeu fer-ho utilitzant la comanda robocopy
en comptes de xcopy
. Aquí teniu el codi modificat:
bat@echo off set source="ruta_de_la_carpeta_origen" set destination="ruta_de_la_carpeta_destí" set timestamp=%date:~10,4%%date:~4,2%%date:~7,2% robocopy %source% %destination%\backup_%timestamp% /E /XO /MINAGE:1 /NJH /NJS
Reemplaceu "ruta_de_la_carpeta_origen" i "ruta_de_la_carpeta_destí" amb les rutes de la vostra carpeta origen i destí.
A continuació, s'expliquen les diferents opcions de la comanda robocopy
:
/E
: Copia tots els subdirectoris, inclosos els buits./XO
: Exclou els fitxers més antics. Això vol dir que només es copiaran els fitxers que siguin més nous a la font que a la destinació./MINAGE:1
: Exclou els fitxers amb una antiguitat inferior a 1 dia (només es copiaran els fitxers modificats durant les últimes 24 hores)./NJH
: No mostra el capçalera de treball del treball en la sortida./NJS
: No mostra el resum de treball en la sortida.
Aquest fitxer .BAT modificat copiarà només els arxius modificats durant les últimes 24 hores de la carpeta origen a la carpeta destí.
Sí, el fitxer .BAT modificat que utilitza robocopy
mantindrà la mateixa estructura de subdirectoris que la carpeta origen quan copiï els fitxers a la carpeta destí. Això vol dir que els fitxers es copiaran als mateixos subdirectoris que tenen a la carpeta origen.
Les opcions /E
i /XO
de la comanda robocopy
són les claus per mantenir la mateixa estructura de subdirectoris:
/E
: Aquesta opció copia tots els subdirectoris, inclosos els buits. Això garanteix que es conservi la mateixa estructura de subdirectoris a la carpeta destí./XO
: Aquesta opció exclou els fitxers més antics (és a dir, només copia els fitxers que siguin més nous a la font que a la destinació). Això garanteix que només es copiaran els fitxers modificats durant les últimes 24 hores.
Així, el fitxer .BAT modificat assegura que els fitxers es copiïn als mateixos subdirectoris que tenen a la carpeta origen i només es copiaran els fitxers modificats durant les últimes 24 hores.
Per canviar el rang de temps en el qual es consideren els arxius modificats, heu de modificar el valor del paràmetre /MINAGE
en la comanda robocopy
dins del fitxer .BAT.
El paràmetre /MINAGE
indica el nombre mínim d'antiguitat dels fitxers en dies. Així, per exemple, si voleu copiar només els fitxers modificats durant les últimes 48 hores, heu d'establir /MINAGE
a 2:
batrobocopy %source% %destination%\backup_%timestamp% /E /XO /MINAGE:2 /NJH /NJS
Si voleu copiar els fitxers modificats durant les últimes 72 hores, heu d'establir /MINAGE
a 3:
batrobocopy %source% %destination%\backup_%timestamp% /E /XO /MINAGE:3 /NJH /NJS
I així successivament. Simplement, canvieu el valor de /MINAGE
per ajustar el rang de temps en el qual es consideren els fitxers modificats.
Els fitxers .BAT (fitxers de lot) són scripts de comandes per a l'entorn de línia d'ordres (Command Prompt) de Windows, i utilitzen el llenguatge d'scripts de lot. Aquests scripts permeten automatitzar processos i tasques en sistemes Windows.
Per aprendre a crear i utilitzar fitxers .BAT, heu d'aprendre el llenguatge d'scripts de lot i familiaritzar-vos amb les comandes i la sintaxi específiques d'aquest entorn. Aquí teniu alguns recursos i suggeriments per començar:
Familiaritzeu-vos amb les comandes bàsiques de la línia d'ordres de Windows. Algunes comandes útils són
cd
,dir
,copy
,del
,move
,mkdir
,rmdir
,xcopy
,robocopy
,find
,echo
iset
. Moltes d'aquestes comandes són la base dels scripts de lot.Aprendre la sintaxi dels scripts de lot. Això inclou el coneixement de variables, operadors, bucles, instruccions condicionals, redirecció de sortida, i altres elements de control de flux.
Estudieu exemples de scripts de lot en línies. Hi ha molts exemples disponibles en línies que podeu examinar i adaptar a les vostres necessitats. Aprendre dels exemples és una forma efectiva d'adquirir coneixements pràctics sobre com funcionen els scripts de lot.
Cerqueu tutorials i recursos en línia. Hi ha diversos tutorials, articles i fòrums que expliquen com crear scripts de lot i resoldre problemes específics. Algunes webs que us poden interessar són Stack Overflow, la documentació oficial de Microsoft i diversos llocs web de tutorials.
Practiqueu creant i executant scripts de lot senzills. A mesura que aprengueu noves comandes i sintaxi, creeu scripts de lot senzills per a tasques com ara copiar fitxers, crear directoris o executar programes. Això us ajudarà a entendre millor com funcionen els scripts de lot i com es poden utilitzar per automatitzar tasques.
Recorda que els scripts de lot són específics per a Windows. Si voleu aprendre a crear scripts per a altres sistemes operatius, com ara Linux o macOS, haureu d'aprendre a utilitzar altres llenguatges d'scripts, com ara shell script (Bash) o Python.
Aquí teniu una taula amb alguns conceptes bàsics, definicions i exemples d'scripts de lot:
Concepte | Definició | Exemple d'ús |
---|---|---|
Comandes | Ordres que realitzen accions específiques en l'entorn de línia d'ordres de Windows. | dir (mostra el contingut d'un directori) |
Variables | Espais de memòria que emmagatzemen valors per ser utilitzats en un script. | set myVar=Hello World (crea una variable anomenada myVar amb el valor "Hello World") |
Estructura condicional | Permet executar diferents blocs de codi segons si es compleixen certes condicions. | if %myVar%==10 (echo Es igual a 10) else (echo No es igual a 10) (comprova si myVar és igual a 10 i mostra el missatge corresponent) |
Bucles | Executa un bloc de codi repetidament mentre es compleixi una condició específica. | for /L %%i in (1,1,5) do (echo %%i) (compta del 1 al 5) |
Redirecció de sortida | Desvia la sortida d'una comanda a un fitxer o a una altra comanda. | dir > dirlist.txt (guarda el resultat de la comanda dir en un fitxer anomenat dirlist.txt ) |
Pipes | Permet passar la sortida d'una comanda a una altra comanda per ser processada. | findstr "text" input.txt > output.txt (cerca "text" en el fitxer input.txt i guarda els resultats en output.txt ) |
Funcions | Blocs de codi reutilitzables que realitzen una tasca específica. | :myFunction (defineix una funció anomenada myFunction ) |
Comentaris | Text que no s'executa i s'utilitza per proporcionar informació sobre el codi. | REM Aquesta línia és un comentari (afegeix un comentari a l'script) |
Paràmetres | Valors passats a un script o funció per personalitzar el seu comportament. | %1 , %2 , %3 , etc. (paràmetres d'un script de lot) |
Aquesta taula us proporciona una visió general dels conceptes bàsics dels scripts de lot. A mesura que aprengueu més sobre aquest llenguatge d'scripts, podeu ampliar aquesta taula amb altres conceptes, comandes i exemples.
Aquí teniu una taula amb algunes de les comandes més típiques utilitzades en scripts de lot i la seva descripció:
Comanda | Descripció | Exemple d'ús |
---|---|---|
cd | Canvia el directori actual. | cd C:\Users (canvia al directori "C:\Users") |
dir | Mostra el contingut d'un directori. | dir C:\Users (mostra el contingut del directori "C:\Users") |
copy | Copia un fitxer d'un lloc a un altre. | copy input.txt output.txt (copia "input.txt" a "output.txt") |
del | Elimina fitxers. | del input.txt (elimina el fitxer "input.txt") |
move | Mou fitxers i directoris d'un lloc a un altre. | move input.txt folder\ (mou "input.txt" al directori "folder") |
mkdir | Crea un nou directori. | mkdir newFolder (crea un directori anomenat "newFolder") |
rmdir | Elimina un directori. | rmdir newFolder (elimina el directori "newFolder") |
xcopy | Copia fitxers i directoris amb més opcions que copy . | xcopy /E inputFolder outputFolder (copia tot el contingut de "inputFolder" a "outputFolder", inclosos els subdirectoris) |
find | Cerca text dins d'un fitxer. | find "example" input.txt (cerca el text "example" en el fitxer "input.txt") |
echo | Mostra text a la pantalla o modifica l'opció d'eco. | echo Hello, World! (mostra "Hello, World!" a la pantalla) |
set | Estableix o mostra variables d'entorn. | set myVar=Hello World (crea una variable anomenada "myVar" amb el valor "Hello World") |
if | Executa condicionals en els scripts de lot. | if %myVar%==10 (echo Es igual a 10) else (echo No es igual a 10) (comprova si myVar és igual a 10 i mostra el missatge corresponent) |
for | Executa bucles en els scripts de lot. | for /L %%i in (1,1,5) do (echo %%i) (compta del 1 al 5) |
Aquesta taula us proporciona una visió general de les comandes més comunes utilitzades en scripts de lot. A mesura que aprengueu més sobre aquest llenguatge d'scripts, podeu continuar explorant altres comandes i les seves opcions per ampliar les vostres habilitats.
robocopy
(Robust File Copy) és una comanda d'utilitat de còpia de fitxers avançada disponible en sistemes operatius Windows. Va ser introduïda per primera vegada com a part del Windows Resource Kit i, des de Windows Vista, es troba integrada en el sistema operatiu.
robocopy
ofereix més funcionalitats i opcions que les comandes copy
i xcopy
. Algunes de les seves característiques són:
- Copia de directoris i subdirectoris, inclosos els buits.
- Capacitat de copiar només fitxers amb atributs específics, com ara només fitxers modificats dins d'un període de temps determinat o fitxers amb un estat d'arxiu específic.
- Resumir còpies de fitxers interrompudes o amb errors, gràcies a la seva capacitat de reintentar la còpia.
- Control detallat de la informació que es mostra durant la còpia dels fitxers, incloent-hi la possibilitat de registrar les accions en un fitxer de registre.
- Copiar permisos de fitxers, propietaris i marques horàries.
- Possibilitat de mirroring (és a dir, crear una còpia exacta de la font a la destinació, eliminant fitxers a la destinació que ja no existeixen a la font).
Un exemple bàsic de l'ús de robocopy
és el següent:
mathematicarobocopy C:\source C:\destination /E
Aquesta comanda copia tot el contingut del directori "C:\source" al directori "C:\destination", incloent tots els subdirectoris i fitxers, fins i tot si estan buits.
robocopy
ofereix moltes altres opcions que es poden utilitzar per personalitzar el procés de còpia segons les vostres necessitats. Podeu trobar informació detallada sobre les opcions disponibles executant robocopy /?
a la línia d'ordres o consultant la documentació oficial de Microsoft.