Innehållsförteckning
Verktyg och tips för att hantera binär- och textdata på Debian-systemet beskrivs.
|
Varning |
|---|---|
|
Okoordinerad skrivåtkomst till aktivt åtkomna enheter och filer från flera
processer får inte göras för att undvika tävlingstillståndet. Fillåsningsmekanismer som använder
|
Datasäkerheten och den kontrollerade delningen av data har flera aspekter.
Skapande av dataarkiv
Tillgång till fjärrlagring
Dupliceringen
Spårning av modifieringshistoriken
Underlättande av datadelning
Förhindrande av obehörig filåtkomst
Detektering av obehörig filändring
Dessa kan realiseras genom att använda en kombination av olika verktyg.
Verktyg för arkivering och komprimering
Verktyg för kopiering och synkronisering
Filsystem i nätverk
Flyttbara lagringsmedier
Det säkra skalet
Systemet för autentisering
Verktyg för versionshanteringssystem
Hash- och kryptografiska krypteringsverktyg
Här följer en sammanfattning av de arkiv- och komprimeringsverktyg som finns tillgängliga i Debian-systemet.
Tabell 10.1. Lista över arkiv- och komprimeringsverktyg
| paket | popcon | storlek | tillägg | kommando | kommentar |
|---|---|---|---|---|---|
tar
|
V:895, I:999 | 3085 | .tar |
tjära(1) |
standardarkiveraren (de facto-standard) |
cpio
|
V:321, I:998 | 1201 | .cpio |
cpio(1) |
Unix System V-arkivering, använd med find(1) |
binutils
|
V:170, I:643 | 1118 | .ar |
ar(1) |
arkiverare för skapande av statiska bibliotek |
fastjar
|
V:1, I:10 | 183 | .burk |
fastjar(1) |
arkiveringsprogram för Java (zip-liknande) |
pax
|
V:6, I:10 | 167 | .pax |
pax(1) |
ny POSIX-standardarkiverare, en kompromiss mellan tar och
cpio |
gzip
|
V:890, I:999 | 256 | .gz |
gzip(1), zcat(1), … |
GNU LZ77 komprimeringsverktyg (de facto-standard) |
bzip2
|
V:165, I:971 | 113 | .bz2 |
bzip2(1), bzcat(1), … |
Burrows-Wheeler
block-sorterande komprimeringsverktyg med högre komprimeringsgrad än
gzip(1) (långsammare än gzip med
liknande syntax) |
lzma
|
V:0, I:12 | 349 | .lzma |
lzma(1) |
LZMA-komprimeringsverktyg med högre
komprimeringsgrad än gzip(1) (föråldrad) |
xz-utils
|
V:311, I:980 | 1475 | .xz |
xz(1), xzdec(1), … |
XZ-komprimeringsverktyg med högre
komprimeringsgrad än bzip2(1) (långsammare än
gzip men snabbare än bzip2; ersättning
för LZMA-komprimeringsverktyg ) |
zstd
|
V:132, I:760 | 2312 | .zstd |
zstd(1), zstdcat(1), … |
Zstandard verktyg för snabb förlustfri komprimering |
p7zip
|
V:8, I:259 | 8 | .7z |
7zr(1), p7zip(1) |
7-Zip filarkiveringsprogram med hög komprimeringsgrad(LZMA-komprimering) |
p7zip-full
|
V:28, I:280 | 12 | .7z |
7z(1), 7za(1) |
7-Zip filarkiveringsprogram med hög komprimeringsgrad(LZMA-komprimering och andra) |
lzop
|
V:12, I:139 | 164 | .lzo |
lzop(1) |
LZO-komprimeringsverktyg med högre komprimerings-
och dekomprimeringshastighet än gzip(1) (lägre
komprimeringsgrad än gzip med liknande syntax) |
zip
|
V:48, I:372 | 627 | .zip |
zip(1) |
InfoZIP: DOS arkiv- och komprimeringsverktyg |
unzip
|
V:107, I:762 | 387 | .zip |
packa upp(1) |
InfoZIP: DOS verktyg för avarkivering och dekomprimering |
|
Varning |
|---|---|
|
Ange inte variabeln " |
Det gzippade tar(1)-arkivet använder filändelsen
".tgz" eller ".tar.gz".
Det xz-komprimerade tar(1)-arkivet använder filändelsen
".txz" eller ".tar.xz".
Populära komprimeringsmetoder i FOSS-verktyg som
tar(1) har flyttats enligt följande:
gzip → bzip2 → xz
cp(1), scp(1) och
tar(1) kan ha vissa begränsningar för speciella
filer. cpio(1) är mest mångsidig.
cpio(1) är utformat för att användas med
find(1) och andra kommandon och lämpar sig för att skapa
backup-skript eftersom filvalsdelen av skriptet kan testas oberoende av
varandra.
Libreoffice-datafilernas interna struktur är ".jar"-filer
som också kan öppnas med unzip.
Det de facto plattformsoberoende arkivverktyget är zip.
Använd det som "zip -rX" för att uppnå maximal
kompatibilitet. Använd även alternativet "-s" om den
maximala filstorleken är viktig.
Här följer en sammanfattning av enkla kopierings- och säkerhetskopieringsverktyg som finns tillgängliga på Debian-systemet.
Tabell 10.2. Lista över kopierings- och synkroniseringsverktyg
| paket | popcon | storlek | verktyg | funktion |
|---|---|---|---|---|
coreutils
|
V:897, I:999 | 18457 | GNU cp | lokal kopiering av filer och kataloger ("-a" för rekursiv) |
openssh-client
|
V:902, I:996 | 5131 | scp | fjärrkopiera filer och kataloger (klient, "-r" för
rekursiv) |
openssh-server
|
V:752, I:808 | 3501 | sshd | fjärrkopiera filer och kataloger (fjärrserver) |
rsync
|
V:201, I:545 | 814 | 1-vägs fjärrsynkronisering och säkerhetskopiering | |
unison
|
V:2, I:13 | 14 | 2-vägs fjärrsynkronisering och säkerhetskopiering |
Kopiering av filer med rsync(8) har fler funktioner än
andra.
delta-överföringsalgoritm som bara skickar skillnaderna mellan källfilerna och de befintliga filerna i destinationen
algoritm för snabbkontroll (som standard) som letar efter filer som har ändrats i storlek eller i tid för senaste ändring
"--exclude" och "--exclude-from"
alternativ liknande tar(1)
"ett efterföljande snedstreck på källkatalogen" syntax som undviker att skapa en ytterligare katalognivå på destinationen.
|
Tips |
|---|---|
|
Versionskontrollsystem (VCS)-verktyg i Tabell 10.14, ”Lista över andra verktyg för versionskontrollsystem” kan fungera som flervägskopierings- och synkroniseringsverktyg. |
Här är flera sätt att arkivera och avarkivera hela innehållet i katalogen
"./source" med hjälp av olika verktyg.
GNU tar(1):
$ tar -cvJf archive.tar.xz ./source $ tar -xvJf archive.tar.xz
Alternativt på följande sätt.
$ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -T -
cpio(1):
$ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio $ zcat archive.cpio.xz | cpio -i
Här är flera sätt att kopiera hela innehållet i katalogen
"./source" med hjälp av olika verktyg.
Lokal kopia: "Katalogen "./source" → katalogen
"/dest
Fjärrkopiering: "./source"-katalogen på den lokala värden
→ "/dest"-katalogen på värden
"user@host.dom"
rsync(8):
# cd ./source; rsync -aHAXSv . /dest # cd ./source; rsync -aHAXSv . user@host.dom:/dest
Alternativt kan du använda syntaxen "ett efterföljande snedstreck på källkatalogen".
# rsync -aHAXSv ./source/ /dest # rsync -aHAXSv ./source/ user@host.dom:/dest
Alternativt på följande sätt.
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest
GNU cp(1) och openSSH scp(1):
# cd ./source; cp -a . /dest # cd ./source; scp -pr . user@host.dom:/dest
GNU tar(1):
# (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - ) # (cd ./source && tar cf - . ) | ssh user@host.dom '(cd /dest && tar xvfp - )'
cpio(1):
# cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest
Du kan ersätta "." med "foo" för alla
exempel som innehåller "." för att kopiera filer från
katalogen "./source/foo" till katalogen
"/dest/foo".
Du kan ersätta "." med den absoluta sökvägen
"/path/to/source/foo" för alla exempel som innehåller
"." för att släppa "cd ./source;".
Dessa kopierar filer till olika platser beroende på vilka verktyg som
används enligt följande.
"/dest/foo": rsync(8), GNU
cp(1) och scp(1)
"/dest/path/to/source/foo": GNU tar(1)
och cpio(1)
|
Tips |
|---|---|
|
|
find(1) används för att välja filer för arkiv- och
kopieringskommandon (se Avsnitt 10.1.3, ”Idiom för arkivet” och Avsnitt 10.1.4, ”Idiom för kopian”) eller för xargs(1) (se
Avsnitt 9.4.9, ”Upprepa ett kommando loopa över filer”). Detta kan
förbättras genom att använda dess kommandoparametrar.
Den grundläggande syntaxen för find(1) kan sammanfattas
enligt följande.
Dess villkorliga argument utvärderas från vänster till höger.
Denna utvärdering upphör när resultatet har fastställts.
"Logisk OR" (anges med
"-o" mellan villkor) har lägre prioritet än "logisk
AND" (anges med "-a"
eller inget mellan villkor).
"Logisk NOT" (anges med
"!" före ett villkor) har högre prioritet än "logisk
AND".
"-prune" returnerar alltid logisk TRUE och, om det är en katalog, stoppas sökningen
av filen bortom denna punkt.
"-name" matchar basen av filnamnet med shell glob (se
Avsnitt 1.5.6, ”Skal glob”) men matchar även dess inledande
"." med metatecken som "*" och
"?" (ny POSIX-funktion )
"-regex" matchar hela sökvägen med BRE i emacs-stil (se Avsnitt 1.6.2, ”Vanliga uttryck”) som standard.
"-size" matchar filen baserat på filstorleken (värdet
föregås av "+" för större, föregås av
"-" för mindre)
"-newer" matchar den fil som är nyare än den som anges i
dess argument.
"-print0" returnerar alltid logisk TRUE och skriver ut det fullständiga
filnamnet(nollavslutat) på
standardutmatningen.
find(1) används ofta med en idiomatisk stil som följande.
# find /path/to \
-xdev -regextype posix-extended \
-type f -regex ".*\.cpio|.*~" -prune -o \
-type d -regex ".*/\.git" -prune -o \
-type f -size +99M -prune -o \
-type f -newer /path/to/timestamp -print0
Detta innebär att göra följande åtgärder.
Sök alla filer som börjar från "/path/to"
Begränsar sin sökning globalt inom sitt startfilsystem och använder ERE (se Avsnitt 1.6.2, ”Vanliga uttryck”) istället
Utesluta filer som matchar regex av ".*\.cpio" eller
".*~" från sökning genom att stoppa bearbetning
Utesluta kataloger som matchar regex av ".*/\.git" från
sökning genom att stoppa bearbetning
Uteslut filer som är större än 99 megabyte (enheter om 1048576 byte) från sökning genom att stoppa bearbetningen
Skriv ut filnamn som uppfyller ovanstående sökvillkor och är nyare än
"/path/to/timestamp"
Observera den idiomatiska användningen av "-prune -o" för
att utesluta filer i exemplet ovan.
|
Notera |
|---|---|
|
För icke-Debian Unix-liknande system kan det
hända att vissa alternativ inte stöds av |
När du väljer datalagringsmedia för viktiga dataarkiv bör du vara försiktig med deras begränsningar. För säkerhetskopiering av små personliga data använder jag CD-R och DVD-R från varumärkesföretaget och förvarar dem i en sval, skuggig, torr och ren miljö. (Bandarkivmedier verkar vara populära för professionellt bruk.)
|
Notera |
|---|---|
|
Ett brandsäkert kassaskåp är avsett för pappersdokument. De flesta datalagringsmedier har lägre temperaturtolerans än papper. Jag förlitar mig vanligtvis på flera säkra krypterade kopior som lagras på flera säkra platser. |
Optimistisk lagringstid för arkivmedia som finns på nätet (mestadels från leverantörsinformation).
100+ år : Syrafritt papper med bläck
100 år : Optisk lagring (CD/DVD, CD/DVD-R)
30 år: Magnetisk lagring (band, diskett)
20 år: Optisk lagring med fasändring (CD-RW)
Här ingår inte mekaniska fel på grund av hantering etc.
Optimistisk skrivcykel för arkivmedia som finns på nätet (mestadels från leverantörsinformation).
250.000+ cykler : Hårddisk-enhet
10.000+ cykler : Flashminne
1.000 cykler : CD/DVD-RW
1 cykler : CD/DVD-R, papper
|
Observera |
|---|---|
|
Siffrorna för lagringstid och skrivcykel bör inte användas för att fatta beslut om kritisk datalagring. Se den specifika produktinformation som tillhandahålls av tillverkaren. |
|
Tips |
|---|---|
|
Eftersom CD/DVD-R och papper endast har 1 skrivcykel, förhindrar de i sig oavsiktlig dataförlust genom överskrivning. Detta är en fördel! |
|
Tips |
|---|---|
|
Om du behöver snabb och frekvent säkerhetskopiering av stora datamängder kan en hårddisk på en fjärrdator som är kopplad till en snabb nätverksanslutning vara det enda realistiska alternativet. |
Flyttbara lagringsenheter kan vara något av följande.
Digitalkamera
Digital musikspelare
De kan anslutas via något av följande.
Moderna skrivbordsmiljöer som GNOME och KDE kan montera dessa flyttbara
enheter automatiskt utan en matchande "/etc/fstab"-post.
|
Tips |
|---|---|
|
Automountade enheter kan ha monteringsalternativet
" |
|
Tips |
|---|---|
|
Automounting under modern skrivbordsmiljö sker endast när dessa flyttbara
mediaenheter inte är listade i " |
Monteringspunkten under modern skrivbordsmiljö väljs som
"/media/användarnamn/disk_label" som
kan anpassas enligt följande.
mlabel(1) för FAT-filsystem
genisoimage(1) med alternativet "-V"
för ISO9660-filsystem
tune2fs(1) med alternativet "-L" för
filsystemet ext2/ext3/ext4
|
Tips |
|---|---|
|
Valet av kodning kan behöva tillhandahållas som monteringsalternativ (se Avsnitt 8.1.3, ”Kodning av filnamn”). |
|
Tips |
|---|---|
|
Om du använder GUI-menyn för att avmontera ett filsystem kan det hända att
dess dynamiskt genererade enhetsnod, t.ex. " |
När du delar data med ett annat system via en flyttbar lagringsenhet bör du formatera den med ett gemensamt filsystem som stöds av båda systemen. Här är en lista över filsystem som kan väljas.
Tabell 10.3. Lista över filsystemval för flyttbara lagringsenheter med typiska användningsscenarier
| filsystemets namn | typiskt användningsscenario |
|---|---|
| FAT12 | plattformsoberoende delning av data på disketten (<32MiB) |
| FAT16 | plattformsoberoende delning av data på en liten hårddiskliknande enhet (2 Gb) |
| FAT32 | plattformsoberoende delning av data på en stor hårddiskliknande enhet (<8TiB, stöds av nyare än MS Windows95 OSR2) |
| exFAT | plattformsoberoende delning av data på den stora hårddisken som enhet (512TiB, stöds av WindowsXP, Mac OS X Snow Leopard 10.6.5 och Linux-kärnan sedan 5.4 release) |
| NTFS | plattformsoberoende delning av data på den stora hårddiskliknande enheten (stöds inbyggt i MS Windows NT och senare versioner, och stöds av NTFS-3G via FUSE på Linux) |
| ISO9660 | plattformsoberoende delning av statiska data på CD-R och DVD+/-R |
| UDF | inkrementell dataskrivning på CD-R och DVD+/-R (ny) |
| MINIX | utrymmeseffektiv lagring av unix-fildata på disketten |
| ext2 | delning av data på hårddisken som enhet med äldre Linux-system |
| ext3 | delning av data på hårddisken som enhet med äldre Linux-system |
| ext4 | delning av data på hårddisken som enhet med nuvarande Linux-system |
| btrfs | delning av data på hårddisken som enhet med nuvarande Linux-system med skrivskyddade ögonblicksbilder |
|
Tips |
|---|---|
|
Se Avsnitt 9.9.1, ”Kryptering av flyttbara diskar med dm-crypt/LUKS” för plattformsoberoende delning av data med hjälp av kryptering på enhetsnivå. |
FAT-filsystemet stöds av nästan alla moderna operativsystem och är mycket användbart för datautbyte via flyttbara hårddiskliknande media.
Vid formatering av flyttbara hårddiskar som enheter för plattformsoberoende delning av data med FAT-filsystemet bör följande vara säkra val.
Partitionera dem med fdisk(8),
cfdisk(8) eller parted(8) (se Avsnitt 9.6.2, ”Konfiguration av diskpartitioner”) till en enda primär partition och
markera den på följande sätt.
Skriv "6" för FAT16 för media som är mindre än 2 GB.
Skriv "c" för FAT32 (LBA) för större media.
Formatera den primära partitionen med mkfs.vfat(8) med
följande.
Bara enhetsnamnet, t.ex. "/dev/sda1" för FAT16
Det uttryckliga alternativet och dess enhetsnamn, t.ex. "-F 32
/dev/sda1" för FAT32
När du använder FAT- eller ISO9660-filsystemen för att dela data bör du tänka på följande.
Arkivera filer i en arkivfil först med tar(1) eller
cpio(1) för att behålla det långa filnamnet, den
symboliska länken, den ursprungliga Unix-filbehörigheten och
ägarinformationen.
Dela upp arkivfilen i bitar på mindre än 2 GiB med kommandot
split(1) för att skydda den från
filstorleksbegränsningen.
Kryptering av arkivfilen för att skydda dess innehåll från obehörig åtkomst.
|
Notera |
|---|---|
|
För FAT-filsystem är den maximala filstorleken |
|
Notera |
|---|---|
|
Microsoft rekommenderar inte att FAT används för enheter eller partitioner som är större än 200 MB. Microsoft belyser dess brister, t.ex. ineffektiv användning av diskutrymme, i sin"Översikt över FAT-, HPFS- och NTFS-filsystem". Naturligtvis bör vi normalt använda ext4-filsystemet för Linux. |
|
Tips |
|---|---|
|
Mer information om filsystem och åtkomst till filsystem finns i"Filesystems HOWTO". |
När du delar data med andra system via nätverket bör du använda en gemensam tjänst. Här är några tips.
Tabell 10.4. Lista över de nätverkstjänster som ska väljas med det typiska användningsscenariot
| nätverkstjänst | beskrivning av typiskt användningsscenario |
|---|---|
| SMB/CIFS nätverksmonterat filsystem med Samba | dela filer via "Microsoft Windows Network", se
smb.conf(5) och The Official Samba 3.x.x HOWTO and
Reference Guide eller paketet samba-doc |
| NFS nätverksmonterat filsystem med Linux-kärnan | dela filer via "Unix/Linux Network", se exports(5) och
Linux NFS-HOWTO |
| HTTP-tjänst | dela filer mellan webbserver/klient |
| HTTPS-tjänst | fildelning mellan webbserver/klient med krypterad Secure Sockets Layer (SSL) eller Transport Layer Security (TLS) |
| FTP-tjänst | dela filer mellan FTP-server/klient |
Även om dessa filsystem som monteras över nätverket och filöverföringsmetoder över nätverket är ganska praktiska för att dela data, kan de vara osäkra. Deras nätverksanslutning måste säkras på följande sätt.
Se även Avsnitt 6.5, ”Andra nätverksapplikationsservrar” och Avsnitt 6.6, ”Andra klienter för nätverksapplikationer”.
Vi vet alla att datorer ibland går sönder eller att mänskliga fel orsakar skador på system och data. Säkerhetskopiering och återställning är en viktig del av en framgångsrik systemadministration. Alla möjliga felsituationer drabbar dig en dag.
|
Tips |
|---|---|
|
Håll ditt backupsystem enkelt och gör backup ofta. Att ha backup-data är viktigare än hur tekniskt bra din backup-metod är. |
Det finns tre nyckelfaktorer som avgör den faktiska policyn för säkerhetskopiering och återställning.
Att veta vad man ska säkerhetskopiera och återställa.
Datafiler som skapats direkt av dig: data i "~/"
Datafiler som skapats av program som du använder: data i
"/var/" (utom "/var/cache/",
"/var/run/" och "/var/tmp/")
Systemkonfigurationsfiler: data i "/etc/"
Lokala program: data i "/usr/local/" eller
"/opt/"
Information om systeminstallation: ett memo i klartext om viktiga steg (partition, ...)
Bevisad uppsättning data: bekräftad genom experimentella återvinningsoperationer i förväg
Cron-jobb som en användarprocess: filer i katalogen
"/var/spool/cron/crontabs" och starta om
cron(8). Se Avsnitt 9.4.14, ”Regelbunden schemaläggning av arbetsuppgifter” för cron(8) och
crontab(1).
Systemd-timerjobb som användarprocesser: filer i katalogen
"~/.config/systemd/user". Se
systemd.timer(5) och
systemd.service(5).
Autostarta jobb som användarprocesser: filer i katalogen
"~/.config/autostart". Se Specifikation för autostart av
skrivbordsprogram.
Att veta hur man säkerhetskopierar och återställer.
Säker lagring av data: skydd mot överskrivning och systemfel
Frekvent säkerhetskopiering: schemalagd säkerhetskopiering
Redundant säkerhetskopiering: dataspegling
En idiotsäker process: enkel backup med ett enda kommando
Bedömning av risker och kostnader.
Risk för att data går förlorade
Data bör åtminstone finnas på olika diskpartitioner, helst på olika diskar och maskiner för att motstå korruption i filsystemet. Viktiga data lagras bäst på ett skrivskyddat filsystem. [4]
Risk för dataintrång
Känsliga identitetsdata som "/etc/ssh/ssh_host_*_key",
"~/.gnupg/*", "~/.ssh/*",
"~/.local/share/keyrings/*",
"/etc/passwd", "/etc/shadow",
"popularity-contest.conf",
"/etc/ppp/pap-secrets" och
"/etc/exim4/passwd.client" bör säkerhetskopieras som
krypterade. [5] (Se Avsnitt 9.9, ”Tips om datakryptering”.)
Hårdkoda aldrig lösenordet för systeminloggning eller lösenfrasen för dekryptering i något skript, inte ens på ett betrott system. (Se Avsnitt 10.3.6, ”Nyckelring för lösenord”.)
Felfunktioner och deras möjligheter
Hårdvaran (särskilt hårddisken) går sönder
Filsystemet kan skadas och data i det kan gå förlorade
Fjärrlagringssystem är inte tillförlitligt när det gäller säkerhetsöverträdelser
Svagt lösenordsskydd kan lätt avslöjas
Filbehörighetssystemet kan ha äventyrats
Resurser som krävs för backup: personal, hårdvara, mjukvara, …
Automatisk schemalagd säkerhetskopiering med cron-jobb eller systemd-timerjobb
|
Tips |
|---|---|
|
Du kan återställa debconf-konfigurationsdata med
" |
|
Notera |
|---|---|
|
Säkerhetskopiera inte innehållet i pseudofilsystemet som finns i
|
|
Notera |
|---|---|
|
Du kanske vill stoppa vissa applikationsdaemons, t.ex. MTA (se Avsnitt 6.2.4, ”Transportagent för post (MTA)”), medan du säkerhetskopierar data. |
Här är en utvald lista över viktiga säkerhetskopieringsprogram som finns tillgängliga i Debian-systemet.
Tabell 10.5. Lista över verktyg för säkerhetskopiering
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
bacula-common
|
V:6, I:7 | 2501 | Bacula: säkerhetskopiering, återställning och verifiering av nätverk - vanliga supportfiler |
bacula-client
|
V:0, I:2 | 199 | Bacula: säkerhetskopiering, återställning och verifiering av nätverk - metapaket för klienter |
bacula-console
|
V:0, I:2 | 112 | Bacula: säkerhetskopiering, återställning och verifiering av nätverk - textkonsol |
bacula-server
|
I:0 | 199 | Bacula: säkerhetskopiering, återställning och verifiering av nätverk - metapaket för server |
amanda-common
|
V:0, I:2 | 9851 | Amanda: Avancerad Maryland automatisk nätverksdiskarkivering (Libs) |
amanda-client
|
V:0, I:2 | 1099 | Amanda: Avancerad Maryland automatisk nätverksdiskarkivering (klient) |
amanda-server
|
V:0, I:0 | 1093 | Amanda: Avancerad Maryland automatisk nätverksdiskarkivering (server) |
backuppc
|
V:1, I:1 | 3088 | BackupPC är ett högpresterande, företagsklassat system för säkerhetskopiering av datorer (diskbaserad) |
duplicity
|
V:6, I:50 | 2649 | (fjärr-)inkrementell säkerhetskopiering |
deja-dup
|
V:30, I:45 | 5031 | GUI-frontend för duplicity |
borgbackup
|
V:12, I:27 | 3477 | (fjärr)deduplicerande säkerhetskopiering |
borgmatic
|
V:3, I:4 | 946 | borgbackup-hjälpare |
rdiff-backup
|
V:2, I:7 | 1207 | (fjärr-)inkrementell säkerhetskopiering |
restic
|
V:4, I:9 | 24708 | (fjärr-)inkrementell säkerhetskopiering |
backupninja
|
V:2, I:2 | 360 | lättviktigt, utbyggbart meta-backup-system |
slbackup
|
V:0, I:0 | 147 | (fjärr-)inkrementell säkerhetskopiering |
backup-manager
|
V:0, I:0 | 573 | kommandoradsverktyg för säkerhetskopiering |
backup2l
|
V:0, I:0 | 110 | verktyg för säkerhetskopiering/återställning med lågt underhåll för monterbara medier (diskbaserade) |
Backup-verktyg har sina specialiserade fokusområden.
Mondo Rescue är ett backup-system som gör det möjligt att snabbt återställa hela systemet från backup-CD/DVD etc. utan att gå igenom normala systeminstallationsprocesser.
Bacula, Amanda och BackupPC är fullfjädrade verktyg för säkerhetskopiering som är inriktade på regelbundna säkerhetskopior över nätverk.
Duplicity och Borg är enklare backup-verktyg för vanliga arbetsstationer.
För en personlig arbetsstation kan fullfjädrade verktyg för säkerhetskopiering som är utformade för servermiljön inte fungera bra. Samtidigt kan befintliga verktyg för säkerhetskopiering för arbetsstationer ha vissa brister.
Här är några tips för att göra säkerhetskopiering enklare med minimala användarinsatser. Dessa tekniker kan användas med alla verktyg för säkerhetskopiering.
I demonstrationssyfte antar vi att den primära användaren och gruppnamnet är
pingvin och skapar ett exempel på skript för
säkerhetskopiering och ögonblicksbild
"/usr/local/bin/bkss.sh" som:
#!/bin/sh -e
SRC="$1" # source data path
DSTFS="$2" # backup destination filesystem path
DSTSV="$3" # backup destination subvolume name
DSTSS="${DSTFS}/${DSTSV}-snapshot" # snapshot destination path
if [ "$(stat -f -c %T "$DSTFS")" != "btrfs" ]; then
echo "E: $DESTFS needs to be formatted to btrfs" >&2 ; exit 1
fi
MSGID=$(notify-send -p "bkup.sh $DSTSV" "in progress ...")
if [ ! -d "$DSTFS/$DSTSV" ]; then
btrfs subvolume create "$DSTFS/$DSTSV"
mkdir -p "$DSTSS"
fi
rsync -aHxS --delete --mkpath "${SRC}/" "${DSTFS}/${DSTSV}"
btrfs subvolume snapshot -r "${DSTFS}/${DSTSV}" ${DSTSS}/$(date -u --iso=min)
notify-send -r "$MSGID" "bkup.sh $DSTSV" "finished!"
Här används endast det grundläggande verktyget rsync(1)
för att underlätta säkerhetskopiering av systemet och lagringsutrymmet
utnyttjas effektivt av Btrfs.
|
Tips |
|---|---|
|
FYI: Den här författaren använder sitt eget liknande skalskript"bss: Btrfs Subvolume Snapshot Utility" för sin arbetsstation. |
Här är ett exempel på hur du konfigurerar säkerhetskopiering med ett enda GUI-klick.
Förbered en USB-lagringsenhet som ska användas för säkerhetskopiering.
Formatera en USB-lagringsenhet med en partition i btrfs med dess etikettnamn
som "BKUP". Detta kan krypteras (se Avsnitt 9.9.1, ”Kryptering av flyttbara diskar med dm-crypt/LUKS”).
Koppla in den här till ditt system. Skrivbordssystemet bör automatiskt
montera den som "/media/penguin/BKUP".
Kör "sudo chown penguin:penguin /media/penguin/BKUP" för
att göra den skrivbar för användaren.
Skapa "~/.local/share/applications/BKUP.desktop" enligt
de tekniker som beskrivs i Avsnitt 9.4.10, ”Starta ett program från GUI”
som:
[Desktop Entry] Name=bkss Comment=Backup and snapshot of ~/Documents Exec=/usr/local/bin/bkss.sh /home/penguin/Documents /media/penguin/BKUP Documents Type=Application
För varje GUI-klick säkerhetskopieras dina data från
"~/Documents" till en USB-lagringsenhet och en
skrivskyddad ögonblicksbild skapas.
Här är ett exempel på inställning för automatisk säkerhetskopiering som utlöses av mount-händelsen.
Förbered en USB-lagringsenhet som ska användas för säkerhetskopiering enligt Avsnitt 10.2.3.1, ”Grafiskt gränssnitt för säkerhetskopiering”.
Skapa en systemd service unit-fil
"~/.config/systemd/user/back-BKUP.service" som:
[Unit] Description=USB Disk backup Requires=media-%u-BKUP.mount After=media-%u-BKUP.mount [Service] ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/%u/BKUP Documents StandardOutput=append:%h/.cache/systemd-snap.log StandardError=append:%h/.cache/systemd-snap.log [Install] WantedBy=media-%u-BKUP.mount
Aktivera denna systemd-enhetskonfiguration med följande:
$ systemctl --user enable bkup-BKUP.service
För varje mount-händelse säkerhetskopieras dina data från
"~/Documents" till en USB-lagringsenhet och en
skrivskyddad ögonblicksbild skapas.
Här kan namn på systemd-monteringsenheter som systemd för närvarande har i
minnet frågas till servicehanteraren för den anropande användaren med
"systemctl --user list-units --type=mount".
Här är ett exempel på inställning för automatisk säkerhetskopiering som utlöses av timerhändelsen.
Förbered en USB-lagringsenhet som ska användas för säkerhetskopiering enligt Avsnitt 10.2.3.1, ”Grafiskt gränssnitt för säkerhetskopiering”.
Skapa en systemd timer unit-fil
"~/.config/systemd/user/snap-Documents.timer" som:
[Unit] Description=Run btrfs subvolume snapshot on timer Documentation=man:btrfs(1) [Timer] OnStartupSec=30 OnUnitInactiveSec=900 [Install] WantedBy=timers.target
Skapa en systemd service unit-fil
"~/.config/systemd/user/snap-Documents.service" som:
[Unit] Description=Run btrfs subvolume snapshot Documentation=man:btrfs(1) [Service] Type=oneshot Nice=15 ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/%u/BKUP Documents IOSchedulingClass=idle CPUSchedulingPolicy=idle StandardOutput=append:%h/.cache/systemd-snap.log StandardError=append:%h/.cache/systemd-snap.log
Aktivera denna systemd-enhetskonfiguration med följande:
$ systemctl --user enable snap-Documents.timer
För varje timerhändelse säkerhetskopieras dina data från
"~/Documents" till en USB-lagringsenhet och en
skrivskyddad ögonblicksbild skapas.
Här kan namn på systemd-timeranvändarenheter som systemd för närvarande har
i minnet frågas till servicehanteraren för den anropande användaren med
"systemctl --user list-units --type=timer".
För moderna skrivbordssystem kan systemd erbjuda mer finkornig kontroll än
de traditionella Unix-metoderna med at(1),
cron(8) eller anacron(8).
Infrastrukturen för datasäkerhet utgörs av en kombination av datakrypteringsverktyg, verktyg för sammanställning av meddelanden och signaturverktyg.
Tabell 10.6. Lista över infrastrukturverktyg för datasäkerhet
| paket | popcon | storlek | kommando | beskrivning |
|---|---|---|---|---|
gnupg
|
V:352, I:878 | 468 | gpg(1) |
GNU Privacy Guard - verktyg för kryptering och signering med OpenPGP |
gpgv
|
V:289, I:964 | 559 | gpgv(1) |
GNU Privacy Guard - verktyg för signaturverifiering |
paperkey
|
V:1, I:14 | 58 | pappersnyckel(1) |
extrahera bara den hemliga informationen ur OpenPGP:s hemliga nycklar |
cryptsetup
|
V:16, I:81 | 463 | cryptsetup(8), … |
verktyg för dm-crypt blockenhetskryptering med stöd för LUKS |
coreutils
|
V:897, I:999 | 18457 | md5sum(1) |
beräkna och kontrollera MD5-meddelandesammanställning |
coreutils
|
V:897, I:999 | 18457 | sha1sum(1) |
beräkna och kontrollera SHA1-meddelandesammanställning |
openssl
|
V:843, I:996 | 2493 | openssl(1ssl) |
beräkna meddelandesammanställning med "openssl dgst"
(OpenSSL) |
libsecret-tools
|
V:0, I:9 | 49 | hemligt verktyg(1) |
lagra och hämta lösenord (CLI) |
seahorse
|
V:78, I:270 | 7971 | sjöhäst(1) |
verktyg för nyckelhantering (GNOME) |
Se Avsnitt 9.9, ”Tips om datakryptering” om dm-crypt och fscrypt som implementerar infrastruktur för automatisk datakryptering via Linux-kärnmoduler.
Här följer GNU Privacy Guard-kommandon för grundläggande nyckelhantering.
Tabell 10.7. Lista över GNU Privacy Guard-kommandon för nyckelhantering
| kommando | beskrivning |
|---|---|
gpg --gen-nyckel |
skapa en ny nyckel |
gpg --gen-revoke min_användare_ID |
generera nyckel för återkallande för my_user_ID |
gpg --edit-key användare_ID |
redigera tangenten interaktivt, "hjälp" för hjälp |
gpg -o fil --export |
exportera alla nycklar till fil |
gpg --importera fil |
importera alla nycklar från filen |
gpg --send-keys användare_ID |
skicka nyckeln för user_ID till keyserver |
gpg --recv-keys användare_ID |
hämta nyckel till user_ID från keyserver |
gpg --list-keys användare_ID |
lista nycklar för user_ID |
gpg --list-sigs användare_ID |
lista sig. för user_ID |
gpg --check-sigs användare_ID |
kontrollera sig. av user_ID |
gpg --fingeravtryck användare_ID |
kontrollera fingeravtryck för user_ID |
gpg --uppdatera-nycklar |
uppdatera lokal nyckelring |
Här är innebörden av förtroendekoden.
Tabell 10.8. Förteckning över innebörden av förtroendekoden
| kod | beskrivning av stiftelsen |
|---|---|
- |
ingen ägartrust tilldelad / ännu inte beräknad |
e |
beräkning av förtroende misslyckades |
q |
inte tillräckligt med information för beräkning |
n |
lita aldrig på den här nyckeln |
m |
marginellt pålitlig |
f |
fullt betrodd |
u |
slutligen betrodda |
Följande laddar upp min nyckel "1DD8D791" till den
populära nyckelservern "hkp://keys.gnupg.net".
$ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791
En bra standardnyckelserver i "~/.gnupg/gpg.conf" (eller
den gamla platsen "~/.gnupg/options") innehåller
följande.
keyserver hkp://keys.gnupg.net
Följande hämtar okända nycklar från nyckelservern.
$ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\
cut -d ':' -f 5| sort | uniq | xargs gpg --recv-keys
Det fanns en bugg i OpenPGP Public Key
Server (före version 0.9.6) som skadade nycklar med fler än 2
undernycklar. Det nyare paketet gnupg (>1.2.1-2) kan
hantera dessa skadade undernycklar. Se gpg(1) under
alternativet "--repair-pks-subkey-bug".
Här följer exempel på hur du använder GNU Privacy Guard-kommandon på filer.
Tabell 10.9. Lista över GNU Privacy Guard-kommandon på filer
| kommando | beskrivning |
|---|---|
gpg -a -s fil |
konvertera filen till ASCII armored file.asc |
gpg --armor --sign fil |
, , |
gpg --clearsign fil |
tydligt budskap |
gpg --clearsign fil|mail foo@exempel.se |
skicka ett i klartext signerat meddelande till
foo@exempel.se |
gpg --clearsign --not-dash-escaped patchfile |
klar-sign patchfile |
gpg --verifiera fil |
verifiera klar-signerad fil |
gpg -o fil.sig -b fil |
skapa fristående signatur |
gpg -o fil.sig --avlägsna-sign fil |
, , |
gpg --verifiera fil.sig fil |
verifiera filen med file.sig |
gpg -o crypt_file.gpg -r namn -e fil |
kryptering med öppen nyckel avsedd för namn från fil till binär crypt_file.gpg |
gpg -o crypt_file.gpg --mottagarens namn --kryptera filen |
, , |
gpg -o crypt_file.asc -a -r namn -e fil |
kryptering med öppen nyckel avsedd för namn från fil till ASCII-armored crypt_file.asc |
gpg -o crypt_file.gpg -c fil |
symmetrisk kryptering från fil till crypt_file.gpg |
gpg -o crypt_file.gpg --symmetrisk fil |
, , |
gpg -o crypt_file.asc -a -c fil |
symmetrisk kryptering avsedd för namn från fil till ASCII armerad crypt_file.asc |
gpg -o file -d crypt_file.gpg -r namn |
dekryptering |
gpg -o file --decrypt crypt_file.gpg |
, , |
Lägg till följande i "~/.muttrc" för att förhindra att en
långsam GnuPG startar automatiskt, samtidigt som den kan användas genom att
skriva "S" på indexmenyn.
macro index S ":toggle pgp_verify_sig\n" set pgp_verify_sig=no
Med insticksprogrammet gnupg kan du köra GnuPG
transparent för filer med tillägg ".gpg",
".asc" och ".pgp".[6]
$ sudo aptitude install vim-scripts $ echo "packadd! gnupg" >> ~/.vim/vimrc
md5sum(1) är ett verktyg för att skapa en digest-fil med
hjälp av metoden i rfc1321 och verifiera
varje fil med den.
$ md5sum foo bar >baz.md5 $ cat baz.md5 d3b07384d113edec49eaa6238ad5ff00 foo c157a79031e1c40f85931829bc5fc552 bar $ md5sum -c baz.md5 foo: OK bar: OK
|
Notera |
|---|---|
|
Beräkningen av MD5-summan är mindre CPU-intensiv än beräkningen av den kryptografiska signaturen med GNU Privacy Guard (GnuPG). Vanligtvis signeras endast den översta digestfilen kryptografiskt för att säkerställa dataintegriteten. |
I GNOME-systemet hanterar GUI-verktyget seahorse(1)
lösenord och lagrar dem säkert i nyckelringen
~/.local/share/keyrings/*.
secret-tool(1) kan lagra lösenord till nyckelringen från
kommandoraden.
Let's store lösenfras som används för LUKS/dm-crypt-krypterad diskavbildning
$ secret-tool store --label='LUKS passphrase for disk.img' LUKS my_disk.img Password: ********
Detta lagrade lösenord kan hämtas och matas till andra program,
t.ex. cryptsetup(8).
$ secret-tool lookup LUKS my_disk.img | \ cryptsetup open disk.img disk_img --type luks --keyring - $ sudo mount /dev/mapper/disk_img /mnt
|
Tips |
|---|---|
|
När du behöver ange lösenord i ett skript ska du använda
|
Det finns många sammanfogningsverktyg för källkoden. Följande kommandon fångade mina ögon.
Tabell 10.10. Lista över verktyg för sammanfogning av källkod
| paket | popcon | storlek | kommando | beskrivning |
|---|---|---|---|---|
patch
|
V:77, I:716 | 242 | patch(1) |
tillämpa en diff-fil på ett original |
vim
|
V:85, I:353 | 4077 | vimdiff(1) |
jämföra 2 filer sida vid sida i vim |
imediff
|
V:0, I:0 | 348 | imediff(1) |
interaktivt fullskärmsverktyg för 2/3-vägs sammanslagning |
meld
|
V:5, I:25 | 3546 | meld(1) |
jämföra och sammanfoga filer (GTK) |
wiggle
|
V:0, I:0 | 175 | vicka(1) |
tillämpa avvisade korrigeringar |
diffutils
|
V:879, I:997 | 1768 | diff(1) |
jämföra filer rad för rad |
diffutils
|
V:879, I:997 | 1768 | diff3(1) |
jämför och sammanfogar tre filer rad för rad |
quilt
|
V:1, I:19 | 885 | quilt(1) |
hantera serier av korrigeringar |
wdiff
|
V:5, I:43 | 651 | wdiff(1) |
visa ordskillnader mellan textfiler |
diffstat
|
V:10, I:106 | 79 | diffstat(1) |
producera ett histogram av förändringar av diff |
patchutils
|
V:12, I:104 | 242 | kombineradiff(1) |
skapa en kumulativ patch från två inkrementella patchar |
patchutils
|
V:12, I:104 | 242 | dehtmldiff(1) |
extrahera en diff från en HTML-sida |
patchutils
|
V:12, I:104 | 242 | filterdiff(1) |
extrahera eller exkludera diffar från en diff-fil |
patchutils
|
V:12, I:104 | 242 | fixcvsdiff(1) |
åtgärda diff-filer skapade av CVS som patch(1) tolkar fel |
patchutils
|
V:12, I:104 | 242 | flipdiff(1) |
byta ordning på två lappar |
patchutils
|
V:12, I:104 | 242 | grepdiff(1) |
visa vilka filer som har ändrats av en patch som matchar en regex |
patchutils
|
V:12, I:104 | 242 | interdiff(1) |
visa skillnader mellan två enhetliga diff-filer |
patchutils
|
V:12, I:104 | 242 | lsdiff(1) |
visa vilka filer som ändras av en patch |
patchutils
|
V:12, I:104 | 242 | recountdiff(1) |
räkna om räkningar och förskjutningar i enhetliga sammanhang diffs |
patchutils
|
V:12, I:104 | 242 | rediff(1) |
fixa offsets och counts för en handredigerad diff |
patchutils
|
V:12, I:104 | 242 | splitdiff(1) |
separera ut inkrementella korrigeringar |
patchutils
|
V:12, I:104 | 242 | packa uppdiff(1) |
demanglera lappar som har blivit inplastade med ord |
dirdiff
|
V:0, I:1 | 167 | dirdiff(1) |
visa skillnader och slå samman ändringar mellan katalogträd |
docdiff
|
V:0, I:0 | 554 | docdiff(1) |
jämför två filer ord för ord / tecken för tecken |
makepatch
|
V:0, I:0 | 99 | makepatch(1) |
generera utökade patchfiler |
makepatch
|
V:0, I:0 | 99 | applicera patch(1) |
tillämpa utökade patchfiler |
Följande procedurer extraherar skillnader mellan två källfiler och skapar
enhetliga diff-filer "file.patch0" eller
"file.patch1" beroende på filens plats.
$ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1
Diff-filen (alternativt kallad patch-fil) används för att skicka en programuppdatering. Den mottagande parten tillämpar denna uppdatering på en annan fil på följande sätt.
$ patch -p0 file < file.patch0 $ patch -p1 file < file.patch1
Om du har två versioner av en källkod kan du utföra 2-vägs sammanslagning
interaktivt med hjälp av imediff(1) på följande sätt.
$ imediff -o file.merged file.old file.new
Om du har tre versioner av en källkod kan du utföra 3-vägs sammanslagning
interaktivt med hjälp av imediff(1) på följande sätt.
$ imediff -o file.merged file.yours file.base file.theirs
Git är idag det självklara verktyget för versionshanteringssystem (VCS) eftersom Git kan göra allt för både lokal och fjärransluten källkodshantering.
Debian tillhandahåller kostnadsfria Git-tjänster via Debian Salsa-tjänsten. Dess dokumentation finns på https://wiki.debian.org/Salsa.
Här är några Git-relaterade paket.
Tabell 10.11. Lista över git-relaterade paket och kommandon
| paket | popcon | storlek | kommando | beskrivning |
|---|---|---|---|---|
git
|
V:379, I:598 | 50172 | git(7) |
Git, det snabba, skalbara och distribuerade systemet för revisionskontroll |
gitk
|
V:3, I:30 | 2003 | gitk(1) |
GUI Git-repository-webbläsare med historik |
git-gui
|
V:1, I:19 | 2508 | git-gui(1) |
GUI för Git (Ingen historik) |
git-email
|
V:0, I:11 | 1187 | git-send-email(1) |
skicka en samling patchar som e-post från Git |
git-buildpackage
|
V:1, I:8 | 2030 | git-byggpaket(1) |
automatisera Debian-paketering med Git |
dgit
|
V:0, I:1 | 646 | dgit(1) |
gits interoperabilitet med Debian-arkivet |
imediff
|
V:0, I:0 | 348 | git-ime(1) |
interaktivt git commit split hjälpverktyg |
stgit
|
V:0, I:0 | 604 | stg(1) |
quilt ovanpå git (Python) |
git-doc
|
I:12 | 14238 | N/A | officiell dokumentation för Git |
gitmagic
|
I:0 | 721 | N/A | "Git Magic", en mer lättförståelig guide till Git |
Du kanske vill ställa in flera globala konfigurationer i
"~/.gitconfig", till exempel ditt namn och din
e-postadress som används av Git enligt följande.
$ git config --global user.name "Name Surname" $ git config --global user.email yourname@example.com
Du kan också anpassa Gits standardbeteende genom att göra följande.
$ git config --global init.defaultBranch main $ git config --global pull.rebase true $ git config --global push.default current
Om du är alltför van vid CVS- eller Subversion-kommandon kanske du vill ställa in flera kommandovalias genom att göra följande.
$ git config --global alias.ci "commit -a" $ git config --global alias.co checkout
Du kan kontrollera din globala konfiguration på följande sätt.
$ git config --global --list
Git-operationen omfattar flera uppgifter.
Arbetsträdet som innehåller filer som vänder sig till användaren och som du gör ändringar i.
De ändringar som ska registreras måste uttryckligen väljas ut och läggas
till i indexet. Detta är kommandona git add och
git rm.
Indexet som innehåller staged-filer.
Staged-filer kommer att överföras till det lokala förvaret på efterföljande
begäran. Detta är git commit-kommandot.
Det lokala arkiv som innehåller filer med åtaganden.
Git registrerar den länkade historiken för de överförda uppgifterna och organiserar dem som grenar i arkivet.
Det lokala förvaret kan skicka data till fjärrförvaret med kommandot
git push.
Det lokala arkivet kan ta emot data från fjärrarkiv med kommandona
git fetch och git pull.
Kommandot git pull utför kommandot git
merge eller git rebase efter kommandot
git fetch.
Här kombinerar git merge två separata grenar av historien
i slutet till en punkt. (Detta är standard för git pull
utan anpassning och kan vara bra för upstream-personer som publicerar gren
till många människor)
Här skapar git rebase en enda gren av sekventiell
historia av den avlägsna grenen en följt av den lokala grenen en. (Detta är
pull.rebase verkliga anpassningsfall och kan vara bra för
resten av oss.)
Fjärrförvaret som innehåller bekräftade filer.
Kommunikationen till fjärrlagret sker med hjälp av säkra kommunikationsprotokoll som SSH eller HTTPS.
Arbetsträdet är filer utanför katalogen .git/. Filerna i
katalogen .git/ innehåller indexet, data från det lokala
arkivet och vissa textfiler för git-konfigurationen.
Här följer en översikt över de viktigaste Git-kommandona.
Tabell 10.12. Huvudsakliga Git-kommandon
| Git-kommando | funktion |
|---|---|
git init |
skapa det (lokala) förvaret |
git-klon URL |
klona fjärrförvaret till ett lokalt förvar med arbetsträdet |
git pull origin main |
uppdatera den lokala grenen main med fjärrarkivet
origin |
git add . |
lägg till fil(er) i arbetsträdet till indexet för redan existerande filer i indexet endast |
git add -A . |
lägg till fil(er) i arbetsträdet till indexet för alla filer inklusive borttagningar |
git rm filnamn |
ta bort fil(er) från arbetsträdet och indexet |
git commit |
överföra ändringar i indexet till det lokala arkivet |
git commit -a |
lägga till alla ändringar i arbetsträdet i indexet och överföra dem till det lokala arkivet (add + commit) |
git push -u ursprung gren_namn |
uppdatera fjärrförvarets origin med den lokala grenen
branch_name (första anropet) |
git push ursprung gren_namn |
uppdatera fjärrförvarets origin med den lokala grenen
branch_name (efterföljande anrop) |
git diff treeish1 treeish2 |
visa skillnaden mellan treeish1 commit och treeish2 commit |
gitk |
GUI-visning av historikträd för grenar i VCS repository |
Här är några Git-tips.
Tabell 10.13. Git-tips
| Git-kommandoraden | funktion |
|---|---|
gitk --all |
se fullständig Git-historik och hantera dem, till exempel återställa HEAD till en annan commit, plocka patchar, skapa taggar och grenar ... |
git stash |
få det rena fungerande trädet utan att förlora data |
git fjärrkontroll -v |
kontrollera inställningar för fjärrkontroll |
git gren -vv |
kontrollera inställningar för filial |
git-status |
visa status för arbetsträdet |
git config -l |
lista git-inställningar |
git reset --hard HEAD; git clean -x -d -f |
återställ alla ändringar i arbetsträdet och rensa upp dem helt |
git rm --cached filnamn |
återställt staged index ändrat av git add filnamn |
git reflog |
hämta referenslogg (användbart för att återskapa commits från den borttagna grenen) |
git branch new_branch_name HEAD@{6} |
skapa en ny gren från reflog information |
git remote lägg till ny_remote URL |
lägga till en new_remote fjärrförvaringsplats som pekas
ut av URL |
git remote rename origin upstream |
byt namn på fjärrförvaret från origin till
upstream |
git branch -u uppströms/branch_namn |
ställa in fjärrspårningen till fjärrförvaret upstream och
dess grennamn branch_name. |
git remote set-url ursprung https://foo/bar.git |
ändra URL för origin |
git remote set-url --push uppströms AVSTÄNGD |
inaktivera push till upstream (redigera
.git/config för att återaktivera) |
git fjärruppdatering uppströms |
hämta uppdateringar av alla avlägsna grenar i
uppströmsförvaret |
git hämta uppströms foo:uppströms-foo |
skapa en lokal (eventuellt föräldralös) upstream-foo-gren
som en kopia av foo-grenen i
uppströmsarkivet |
git checkout -b ämne_gren ; git push -u ämne_gren
ursprung |
skapa en ny topic_branch och skicka den till
origin |
git branch -m gammaltnamn nyttnamn |
byt namn på lokal filial |
git push -d origin branch_to_be_removed |
ta bort fjärrfilial (ny metod) |
git push ursprung :branch_to_be_removed |
ta bort fjärrfilial (gammal metod) |
git checkout --orphan oansluten |
skapa en ny oansluten filial |
git rebase -i ursprung/main |
omorganisera/droppa/släcka åtaganden från origin/main för
att rensa grenens historik |
git reset HEAD^; git commit --amend |
sammanfoga de 2 senaste uppdragen till ett |
git checkout ämne_gren ; git merge --squash ämne_gren |
pressa ihop hela topic_branch till en commit |
git fetch --unshallow --update-head-ok origin
'+refs/heads/*:refs/heads/*' |
konvertera en ytlig klon till en fullständig klon med alla grenar |
git ime |
dela upp den senaste överföringen i en serie fil-för-fil mindre överföringar
etc.(imediff-paketet krävs) |
git repack -a -d; git prune |
packa om det lokala arkivet till ett enda paket (detta kan begränsa risken för förlorad dataåterställning från raderad filial etc.) |
|
Varning |
|---|---|
|
Använd inte taggsträngen med mellanslag även om vissa verktyg som
|
|
Observera |
|---|---|
|
Om en lokal gren som har flyttats till ett fjärrarkiv blir omgjord eller
krossad, är det riskfyllt att flytta den här grenen och kräver alternativet
|
|
Observera |
|---|---|
|
Att anropa ett |
|
Tips |
|---|---|
|
Om det finns en körbar fil |
Se följande.
manpage:
git(1)(/usr/share/doc/git-doc/git.html)
Användarhandbok för
Git(/usr/share/doc/git-doc/user-manual.html)
En introduktion till git i form av
en
handledning(/usr/share/doc/git-doc/gittutorial.html)
En introduktion till git i
form av en handledning: del
två(/usr/share/doc/git-doc/gittutorial-2.html)
Vardaglig GIT med 20 kommandon
eller så(/usr/share/doc/git-doc/giteveryday.html)
Git
Magic(/usr/share/doc/gitmagic/html/index.html)
Versionskontrollsystem (VCS) kallas ibland för revisionskontrollsystem (RCS) eller programvarukonfigurationshantering (SCM).
Här är en sammanfattning av de anmärkningsvärda andra VCS som inte är Git på Debiansystemet.
Tabell 10.14. Lista över andra verktyg för versionskontrollsystem
| paket | popcon | storlek | verktyg | Typ av VCS | kommentar |
|---|---|---|---|---|---|
mercurial
|
V:3, I:27 | 1330 | Mercurial | distribuerad | DVCS i Python och lite C |
darcs
|
V:0, I:3 | 48209 | Darcs | distribuerad | DVCS med smart algebra av patchar (långsam) |
bzr
|
I:5 | 28 | GNU Bazaar | distribuerad | DVCS påverkad av tla skriven i Python(historisk) |
tla
|
V:0, I:0 | 1017 | GNU arkiv | distribuerad | DVCS huvudsakligen av Tom Lord (historisk) |
subversion
|
V:10, I:61 | 4850 | Subversion | fjärr | "CVS done right", nyare standard för fjärrstyrd VCS (historisk) |
cvs
|
V:3, I:28 | 4835 | CVS | fjärr | tidigare standard fjärrstyrd VCS (historisk) |
tkcvs
|
V:0, I:0 | 34 | CVS, … | fjärr | GUI-visning av VCS (CVS, Subversion, RCS) repository-träd |
rcs
|
V:1, I:10 | 578 | RCS | lokal | "Unix SCCS gjort på rätt sätt" (historisk) |
cssc
|
V:0, I:0 | 2044 | CSSC | lokal | klon av Unix SCCS (historisk) |
[4] En skrivskyddad media som CD/DVD-R kan förhindra överskrivningsolyckor. (Se Avsnitt 9.8, ”De binära uppgifterna” för hur man skriver till lagringsmediet från kommandoraden i skalet. GUI-miljön på GNOME-skrivbordet ger dig enkel åtkomst via menyn: "Platser→CD/DVD-skapare")
[5] Vissa av dessa data kan inte återskapas genom att samma indatasträng matas in i systemet.
[6] Om du använder "~/.vimrc" istället för
"~/.vim/vimrc", vänligen ersätt på motsvarande sätt.