[Bash] Kopiowanie plików, do okreslonej pojemnosci

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
kiler7
Piegowaty Guziec
Piegowaty Guziec
Posty: 19
Rejestracja: 15 mar 2008, 21:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86_64

[Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: kiler7 »

Witam,

Nie wiem jak napisać skrypt który: (pogrubione to te cześći o ktorych nie mam pojecia jak zrobić)
-Z danego katalogu, wybierze do skopiowania wszystkie pliki i katalogi
-Zaznaczy w jakiś sposób jakie pliki juz kiedyś kopiował, aby już nigdy nie kopiował tych samych.
-Skopiuje tylko do wybranej wielkość np 8 GB



Dzieki za pomoc :boat:

PS Nie musi być koniecznie bash może być coś innego tylko z innych skrytowych znam tylko ruby
Awatar użytkownika
Dwimenor
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1260
Rejestracja: 18 mar 2008, 16:14
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Architektura: x86_64

Odp: [Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: Dwimenor »

Czy dobrze rozumiem, że to ma być jakiś system backupowania określonych plików/katalogów na pendriva? Użyj rsync. A jak uważasz, że to wyciąganie armaty na mrówkę, to tar z opcjami backupowania i wykluczania.
Poniższe zdanie jest fałszywe.
Powyższe zdanie jest prawdziwe.
Awatar użytkownika
B.A.D.
Sędziwy Jeż
Sędziwy Jeż
Posty: 96
Rejestracja: 14 lis 2010, 21:16
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: B.A.D. »

co do zaznaczania to możesz przy kopiowaniu zapisywać nazwy plików do jakiegoś innego pliku i później sprawdzać np grepem ilość linii w których aktualnie kopiowana nazwa wystękuje, jeśli jest większa od 0 to nie zapisuj do pliku i nie kopiuj.
co do sprawdzania wielkości ustal sobie jakiś rozmiar docelowy i porównuj z wynikiem polecenia
du nazwa_pliku | awk '{ print $1 }'
-Ice cream... I like an ice cream.
-Yeah? What flawor?
-Doesn't matter... it's for my ass.
Awatar użytkownika
azhag
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 151
Rejestracja: 24 maja 2010, 19:30
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86
Kontakt:

Odp: [Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: azhag »

Do określonej wielkości najlepiej użyć dd.

Do skopiowania nowych plików może użyć tej opcji cp do kopiowania tylko kiedy plik źródłowy jest nowszy niż docelowy lub docelowego nie ma wcale?

I dlaczego wydaje mi się, że rozwiązujemy czyjąś pracę domową?
B.A.D. pisze:

Kod: Zaznacz cały

du nazwa_pliku | awk '{ print $1 }'
awk (czy w ogóle potok) jest zbędny:

Kod: Zaznacz cały

du <plik
Polski portal Debiana: http://dug.net.pl/
kiler7
Piegowaty Guziec
Piegowaty Guziec
Posty: 19
Rejestracja: 15 mar 2008, 21:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: kiler7 »

Nie jest to zadna praca domowa, uzywam linuxa od prawu dni (konto pozyczone)

Wczesniej mialem narzedzie typu aktówka i wszystko działo.

Moze pomoze ktos jak użyc rsynz nie chce wytaczać "atomowki"

Wyczytałem "rsynz(...)- to protokół synchronizacji plików przez sieć." jak chce lokalnie 1 folder na pendrive i tylko tyle.

Także jak dopisac do rsynz aby kopiował do 8 GB?
Awatar użytkownika
sulti
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 139
Rejestracja: 17 wrz 2007, 15:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: Unity
Architektura: x86

Odp: [Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: sulti »

A może coś takiego?

Kod: Zaznacz cały

size=0
for file in $(find . -type f -size -8G); do
        # jesli plik nie istnieje w docelowym katalogu
        if [ ! -e $BACKUP/$file ]; then
                # zsumuj rozmiar
                size=$((size+`ls -al $file | awk '{print $5}'`))
                [ $size -gt 8000000 ] && exit 1
                # utworz do niego sciezke
                mkdir -p $ABCKUP/`dirname $file` 2>/dev/null
                # skopiuj go
                cp $file $BACKUP/`dirname $file` 
        fi
done
You tried, and you failed, so the lesson is, never try.
kiler7
Piegowaty Guziec
Piegowaty Guziec
Posty: 19
Rejestracja: 15 mar 2008, 21:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: kiler7 »

Nie moge zrozumiec jak ten skryt działa.


Mam go skopiowac do katalogu gdzie mam pliki ktore chce skopiowac na pendrive, gdzie podac sieżke do zamontowanego pendrive(cel kopiowania)?


Widziałem te zmienne $BACKUP ,ale nie moge tego zrozumiec

chyba była takze literowka w nazie $BACKUP

Kod: Zaznacz cały

#!/bin/bash
size=0
for file in $(find . -type f -size -8G); do
        # jesli plik nie istnieje w docelowym katalogu
        if [ ! -e $BACKUP/$file ]; then
                # zsumuj rozmiar
                size=$((size+`ls -al $file | awk '{print $5}'`))
                [ $size -gt 8000000 ] && exit 1
                # utworz do niego sciezke
                mkdir -p $BACKUP/`dirname $file` 2>/dev/null
                # skopiuj go
                cp $file $BACKUP/`dirname $file` 
        fi
done
BACKUP="/home/aaa/aaa" - chciałem zrobic cos takiego

I zaczeło mi coś działać.

PS wielkie dzieki
Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: dk75 »

Kod: Zaznacz cały

rsync --ignore-existing --max-size=8G /home/aaa/aaa /media/WilkMemory/
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
kiler7
Piegowaty Guziec
Piegowaty Guziec
Posty: 19
Rejestracja: 15 mar 2008, 21:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: kiler7 »

Kod: Zaznacz cały

rsync --ignore-existing --max-size=8G /opt/Adobe /home/aaa/kopia/
skipping directory .
Juz probowałem po zrodle z / i bez, jedynie co dalo rezultat kopiowania to z .../sciezka/* - ale wtedy nie kopiuje mi katalogów
Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [Bash] Kopiowanie plików, do okreslonej pojemnosci

Post autor: dk75 »

aaa... zapomniałem o gwiazdce ;P
potrzebna jak się nie łazi po drzewie katalogów

Ale o podkatalogach nie pisałeś więc wolałem być ostrożny

Kod: Zaznacz cały

rsync --ignore-existing --max-size=8G -r /opt/Adobe/ /home/aaa/kopia/
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości