ლაბი 02 — ფაილები და საქაღალდეები¶
ამოცანა
კოლეგამ დაგიტოვა ბარდაკი — 2 წლის საველე მონაცემები ერთ საქაღალდეში. დაალაგე, გაასუფთავე და დააარქივე. ხელით ერთი ფაილიც არ გადაათრიო.
| დრო | სირთულე | თავები | გამოცდა |
|---|---|---|---|
| 25 წუთი | დამწყები | 02 · 03 | LPIC-1 103.3 · RHCSA |
წესები
- ტაიმერი ჩართე სანამ დაიწყებ
manდა--help— დაშვებულია (გამოცდაზეც დაშვებულია)- ინტერნეტი, ChatGPT, ეს გვერდის პასუხები — არა
- თუ 25 წუთში ვერ მოასწარი, გააჩერე და ნახე პასუხი. მერე თავიდან გააკეთე ტაიმერზე.
მომზადება¶
გაუშვი ეს ბლოკი სავარჯიშო გარემოს შესაქმნელად:
rm -rf ~/lab02 && mkdir -p ~/lab02/field_data && cd ~/lab02/field_data
# საველე წერტილები
for y in 2024 2025; do
for m in 03 06 09; do
for i in 1 2 3; do
touch "points_${y}_${m}_0${i}.shp" "points_${y}_${m}_0${i}.dbf" \
"points_${y}_${m}_0${i}.shx" "points_${y}_${m}_0${i}.prj"
done
done
done
# ორთოფოტოები — რამდენიმე დიდი
for i in 1 2 3 4 5; do
head -c 12M /dev/urandom > "ortho_2024_0${i}.tif"
done
head -c 40M /dev/urandom > ortho_2025_huge.TIF
# ნაგავი
touch temp1.tmp temp2.tmp '~qgis_backup.qgz~' thumbs.db
mkdir -p empty_folder1 empty_folder2
echo "CRS: EPSG:32638, surveyor: T. Beridze" > readme.txt
echo "CRS: EPSG:32637, surveyor: N. Kapanadze" > readme_rustavi.txt
ls -la ~/lab02/field_data | head
დავალებები¶
1 — ინვენტარიზაცია (3 წთ)
დაითვალე და უპასუხე:
- სულ რამდენი ფაილია
field_data-ში? - რამდენი
.shpფაილია? - რომელი ფაილია ყველაზე დიდი?
- რამდენ ადგილს იკავებს მთელი საქაღალდე?
2 — დალაგება წლების მიხედვით (6 წთ)
შექმენი ~/lab02/sorted/2024/ და ~/lab02/sorted/2025/.
გადაიტანე ყოველი ფაილი შესაბამის საქაღალდეში სახელის მიხედვით.
⚠️ ortho_2025_huge.TIF დიდი რეგისტრითაა — ისიც უნდა მოხვდეს 2025-ში.
3 — ნაგვის გასუფთავება (4 წთ)
წაშალე field_data-დან:
- ყველა
.tmpფაილი thumbs.db- ყველა ცარიელი საქაღალდე
- ყველა ფაილი, რომლის სახელი ტილდით (
~) იწყება ან მთავრდება
⚠️ ჯერ ნახე სია, მერე წაშალე. readme.txt არ უნდა წაიშალოს.
4 — მეტამონაცემები (4 წთ)
ორივე readme ფაილში ჩაწერილია CRS. იპოვე ერთი ბრძანებით, რომელ
ფაილში წერია EPSG:32638 — ისე, რომ ფაილები არ გახსნა.
5 — არქივი (5 წთ)
- დააარქივე მთელი
~/lab02/sorted/საქაღალდე~/lab02/field_2024_2025.tar.gz-ად. - შეამოწმე არქივის ზომა.
- გახსენი შიგთავსის სია — არქივის გახსნის გარეშე.
6 — სიმბოლური ბმული (3 წთ)
შექმენი ბმული ~/current_project, რომელიც ~/lab02/sorted/2025/-ზე მიუთითებს.
შეამოწმე ls -l-ით, რომ ბმულია და არა კოპია.
შემოწმება¶
# გაუშვი ლაბის ბოლოს
cd ~/lab02
echo "--- 2024:"; ls sorted/2024 | wc -l # უნდა იყოს 41
echo "--- 2025:"; ls sorted/2025 | wc -l # უნდა იყოს 37
echo "--- ნაგავი:"; find field_data -name "*.tmp" -o -name "thumbs.db" | wc -l # 0
echo "--- ცარიელი:"; find field_data -type d -empty | wc -l # 0
echo "--- არქივი:"; ls -lh field_2024_2025.tar.gz
echo "--- ბმული:"; ls -l ~/current_project
პასუხები — ჯერ თვითონ სცადე
1 — ინვენტარიზაცია
ls -1 | wc -l # ფაილების რაოდენობა
find . -name "*.shp" | wc -l # 18
ls -lhS | head -3 # ზომის მიხედვით დალაგება, ყველაზე დიდი ზემოთ
du -sh . # საქაღალდის ჯამური ზომა
2 — დალაგება
mkdir -p ~/lab02/sorted/{2024,2025}
cd ~/lab02/field_data
find . -maxdepth 1 -type f -iname "*2024*" -exec mv {} ~/lab02/sorted/2024/ \;
find . -maxdepth 1 -type f -iname "*2025*" -exec mv {} ~/lab02/sorted/2025/ \;
-iname აუცილებელია — .TIF დიდი რეგისტრით -name "*2025*"-საც დაიჭერდა,
მაგრამ ჩვევად გამოიმუშავე: სახელებში რეგისტრს ვერ ენდობი.
-maxdepth 1 კი იმიტომ, რომ ახლადშექმნილ ქვესაქაღალდეებში აღარ ჩავიდეს.
3 — გასუფთავება
find . -name "*.tmp" -o -name "thumbs.db" -o -name "~*" -o -name "*~" # ჯერ ნახე
find . \( -name "*.tmp" -o -name "thumbs.db" -o -name "~*" -o -name "*~" \) -delete
find . -type d -empty -delete
ფრჩხილები კრიტიკულია
-delete-ის დამატება ფრჩხილების გარეშე მხოლოდ ბოლო პირობაზე
იმოქმედებდა — find -o-ს ასე კითხულობს. ფრჩხილების გარეშე ეს ბრძანება
სხვას წაშლიდა, ვიდრე გგონია. ეს ზუსტად ის ადგილია, სადაც find-ს
ხალხი მონაცემებს ატყუებს.
4 — მეტამონაცემები
-l (list) მხოლოდ ფაილის სახელს აჩვენებს, შიგთავსს არა.
5 — არქივი
cd ~/lab02
tar -czf field_2024_2025.tar.gz sorted/
ls -lh field_2024_2025.tar.gz
tar -tzf field_2024_2025.tar.gz | head
| დროშა | მნიშვნელობა |
|---|---|
-c |
create — შექმენი |
-z |
gzip შეკუმშვა |
-f |
file — შემდეგი არგუმენტი ფაილის სახელია |
-t |
list — მხოლოდ სია, გახსნის გარეშე |
-x |
extract — გახსენი |
შეამჩნევდი, რომ არქივი თითქმის არ შეიკუმშა?
/dev/urandom-ით შექმნილი ფაილები შემთხვევითი ბაიტებია და შეუკუმშვადია.
ნამდვილი GeoTIFF-ებიც ხშირად ასეა — თუ რასტრი უკვე შეკუმშულია
(LZW, DEFLATE, JPEG), tar -z ზედმეტ დროს ხარჯავს შედეგის გარეშე.
ასეთ შემთხვევაში tar -cf (შეკუმშვის გარეშე) უფრო სწრაფია.
6 — ბმული
ln -s ~/lab02/sorted/2025 ~/current_project
ls -l ~/current_project
# lrwxrwxrwx ... current_project -> /home/user/lab02/sorted/2025
პირველი ასო l ნიშნავს link-ს. -s გამოტოვების შემთხვევაში hard link-ს მიიღებდი,
რომელიც საქაღალდეზე საერთოდ არ მუშაობს.
რა ისწავლე¶
findკრიტერიუმებით და-exec-ით სერიულ დამუშავებას-o-სთან ფრჩხილების აუცილებლობას — მონაცემების უსაფრთხოების საკითხიაtar-ის ოთხ დროშას, რომელიც 95%-ში საკმარისია- სიმბოლურ ბმულებს — GIS-ში მუდმივი პროექტის ბილიკის შესანარჩუნებლად
შემდეგი¶
- ლაბი 03 — ტექსტი და ნაკადები (მზადდება)
- თეორია:
findდეტალურად
სასერტიფიკატო შესაბამისობა
LPIC-1: 103.3 · 103.7 · 104.6 · 104.7
RHCSA: საბაზისო ინსტრუმენტები (ფაილები, არქივები, grep)
სრული მატრიცა — სასერტიფიკატო ამოცანები