Prompt Title: Automatització

Created 1 year ago
Votes 0
Views 334 times
0
Human: Ets un informàtic especialista en automatització. Necessito fer una còpia de seguretat d'una carpeta, cada dia. Quina és la millor manera de fer aquesta automatització? Creo un .BAT? Quines alternatives tinc?
ChatGPT:

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:

  1. 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.

  1. 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.

  1. 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.

  1. 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
Human: El sistema operatiu és Windows. Necessito que m'expliquis bé les opcions de Windows.
ChatGPT:

D'acord, em centraré en les opcions disponibles per a Windows. Teniu dues opcions principals: utilitzar un fitxer .BAT o un script de PowerShell.

  1. 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.
  1. 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
Human: Explica'm pas a pas com funciona el codi del fitxer .bat que has crear al primer exemple.
ChatGPT:

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.

bat
set 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.

bat
set 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í.

bat
set 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.

bat
xcopy %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.

Human: Seria possible que només es copiessin els arxius del directori i subdirectoris d'origen només en el cas que s'hagin modificat durant les últimes 24 hores?
ChatGPT:

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í.

Human: Aquesta automatització respectarà que els fitxers es copiïn al mateix subdirectori que l'origen?
ChatGPT:

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.

Human: Com canvio el rang de temps en el paràmetre dels arxius modificats?
ChatGPT:

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:

bat
robocopy %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:

bat
robocopy %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.

Human: M'encantaria aprendre a generar aquests tipus d'arxius .bat Com ho puc aprendre? Quin llenguatge he d'aprendre?
ChatGPT:

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:

  1. 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 i set. Moltes d'aquestes comandes són la base dels scripts de lot.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Human: Fes-me una taula per a aprendre els conceptes bàsics, les definicions i els usos amb exemples
ChatGPT:

Aquí teniu una taula amb alguns conceptes bàsics, definicions i exemples d'scripts de lot:

ConcepteDefinicióExemple d'ús
ComandesOrdres que realitzen accions específiques en l'entorn de línia d'ordres de Windows.dir (mostra el contingut d'un directori)
VariablesEspais 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 condicionalPermet 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)
BuclesExecuta 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 sortidaDesvia 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)
PipesPermet 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)
FuncionsBlocs de codi reutilitzables que realitzen una tasca específica.:myFunction (defineix una funció anomenada myFunction)
ComentarisText 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àmetresValors 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.

Human: Ara una taula amb les comandes més típiques, com cd, dir, copy, del, love, mkdir, rmdir, xcopy...
ChatGPT:

Aquí teniu una taula amb algunes de les comandes més típiques utilitzades en scripts de lot i la seva descripció:

ComandaDescripcióExemple d'ús
cdCanvia el directori actual.cd C:\Users (canvia al directori "C:\Users")
dirMostra el contingut d'un directori.dir C:\Users (mostra el contingut del directori "C:\Users")
copyCopia un fitxer d'un lloc a un altre.copy input.txt output.txt (copia "input.txt" a "output.txt")
delElimina fitxers.del input.txt (elimina el fitxer "input.txt")
moveMou fitxers i directoris d'un lloc a un altre.move input.txt folder\ (mou "input.txt" al directori "folder")
mkdirCrea un nou directori.mkdir newFolder (crea un directori anomenat "newFolder")
rmdirElimina un directori.rmdir newFolder (elimina el directori "newFolder")
xcopyCopia fitxers i directoris amb més opcions que copy.xcopy /E inputFolder outputFolder (copia tot el contingut de "inputFolder" a "outputFolder", inclosos els subdirectoris)
findCerca text dins d'un fitxer.find "example" input.txt (cerca el text "example" en el fitxer "input.txt")
echoMostra text a la pantalla o modifica l'opció d'eco.echo Hello, World! (mostra "Hello, World!" a la pantalla)
setEstableix o mostra variables d'entorn.set myVar=Hello World (crea una variable anomenada "myVar" amb el valor "Hello World")
ifExecuta 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)
forExecuta 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.

Human: Què és robocopy?
ChatGPT:

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:

  1. Copia de directoris i subdirectoris, inclosos els buits.
  2. 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.
  3. Resumir còpies de fitxers interrompudes o amb errors, gràcies a la seva capacitat de reintentar la còpia.
  4. 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.
  5. Copiar permisos de fitxers, propietaris i marques horàries.
  6. 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:

mathematica
robocopy 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.

avatar
David
Shared 16 prompts
Created 1 year ago

Leave a Comment

Related Tag Prompts

0
0
Job APplication AUtomation
1 year ago 2023-03-30 16:22:42 lufa
0
0
Lua Table Character Mapping
1 year ago 2023-04-08 11:37:33 SomeoneIdfk
0
0
Car Detailing Studio Benefits.
1 year ago 2023-04-25 14:30:20 Pushpendra
0
0
Create Excel Macro.
1 year ago 2023-05-03 16:47:20 GT