Thứ Ba, 1 tháng 12, 2020

Quản lý file, folder trong Solaris

Quản lý File, thư mục
        • Xem danh sách các file : ls
• # ls –l /
• Một số option thường dùng với lệnh ls

-L
Hiển thị danh sách file (chỉ hiện thị tên)
-l
Hiển thị danh sách file (gồm nhiều cột: filename, size,date….)
-a
Liệt kê tất cả các file, bao gồm những file ẩn
-R
Liệt kê tất cả các file kể cả các file trong thư mục con
Cấu trúc hệ thống tập tin
• Khái niệm tập tin được chia làm 3 loại chính:
• Tập tin chứa dữ liệu bình thường
• Tập tin thư mục
• Tập tin thiết bị
• Ngoài ra còn các Link và Pipe như là các tập tin đặc biệt
        # root@solaris11-test:~# ls -l /
        total 1826
        drwxr-xr-x   3 root     root           8 Feb 24  2017 IPS
        drwxr-xr-x   3 root     root           8 Feb 27  2017 IPS_PUBLIC
        drwxr-xr-x   2 root     root           3 Sep 11 10:12 backup
        lrwxrwxrwx   1 root     root           9 Feb 24  2017 bin -> ./usr/bin
        drwxr-xr-x   5 root     sys            9 Feb 24  2017 boot
        drwxr-xr-x   2 root     root           4 Aug  7 15:28 cdrom
        drwxr-xr-x   2 root     root           2 Sep  7 15:18 data3
        drwxr-xr-x 205 root     sys          205 Aug  7 15:26 dev
        drwxr-xr-x   4 root     sys           12 Aug  7 15:26 devices
        drwxr-xr-x  97 root     sys          194 Sep 17 14:32 etc
        drwxr-xr-x   3 root     sys            3 Feb 24  2017 export
        dr-xr-xr-x   1 root     root           1 Sep  2 22:59 home
        drwxr-xr-x  19 root     sys           19 Feb 24  2017 kernel
        drwxr-xr-x  12 root     bin          335 Feb 24  2017 lib
• Một số tập tin thư mục cơ bản:
/bin, /sbin
Chữa các tập tin nhị phân hỗ trợ cho việc boot và thực thi các lệnh
/boot
Chứa kernel, file hỗ trợ cho việc load hệ điều hành
/dev
Chứa các tập tin thiết bị (CDRom, HDD…)
/etc
Chứa các tập tin cấu hình hệ thống
/export
Chứa các home directory mặc định của người dùng
/lib
Chứa kernel module, và các thư viện chia sẻ cho các tập tin nhị phân trong /bin và /sbin
/mnt
Chứa các mount point cửa các thiệt bị được mount vào hệ thống
/proc
Lưu trữ thông tin về kernel, các tiến trình
/root
Lưu trữ home directory cho user root
/tmp
Chứa file tạm
/usr
Chứa các chương trình đã được cài đặt
/var
Chứa các log file, hàng đợi các chương trình, mailbox của users
        
Quản lý và thao tác với file/thưc mục
• Tạo thư mục : mkdir
# mkdir /data
# mkdir –p /data/backup/solaris
• Tạo tập tin :
# echo "ABC" > /data/test.txt
# echo “XYZ" >> /data/test.txt
Tạo tập tin rỗng
# touch /text.txt
• Xem nội dung tập tin:
# cat /etc/passwd
# cat /etc/passwd /etc/shadow
Ngoài ra sử dụng more,less,head,tail…
# tail -f /var/adm/messages
• Sao chép : cp,scp
# cp /export/home/binhtv/file1.txt /data/
# cp /var/mail/* /maillog
# cp –R /export/home/binhtv/test /data/backup/
scp source_file username@destination_host:/destination_folder
# scp test1 root@192.168.1.165:/data/backup
• Di chuyển: mv
# mv /export/home/haivx/file1.txt /data/
# mv /export/home/haivx/test/ /data/backup/
• Đổi tên:
# mv /export/home/haivx/test/ /export/home/haivx/test1
# cp /export/home/haivx/file1.txt /data/file2.txt
• Xóa tập tin : rm
# rm –rf /export/home/haivx/test1.txt
# rm –rf /export/home/haivx/data
• Liên kết tập tin: ls
# ln /data.txt /data1.txt                        --hardlink
# ln –s /export/home/haivx/test.txt /data/       --Symbolic link
• Vào ra thư mục : cd
# cd /export/home/haivx
# cd ../
• Xem thư mục hiện hành: pwd
# pwd
/root
• Đồng bộ file, thư mục : rsync
• # rsync options source destination
-v
hiển thị trạng thái kết quả
-r
copy dữ liệu recursively, nhưng không đảm bảo thông số của file và thư mục
-a
cho phép copy dữ liệu recursively, đồng thời giữ nguyên được tất cả các thông số của thư mục và file
-z
nén dữ liệu trước khi truyền đi giúp tăng tốc quá trình đồng bộ file.
-h
kết hợp với -v để định dạng dữ liệu show ra
--delete
xóa dữ liệu ở destination nếu source không tồn tại dữ liệu đó.
--exclude
loại trừ ra những dữ liệu không muốn truyền đi, nếu bạn cần loại ra nhiều file hoặc folder ở nhiều đường dẫn khác nhau thì mỗi cái bạn phải thêm –exclude tương ứng.
• Đồng bộ local server
# rsync -zvh backup.tar /tmp/backups/
# rsync -avzh /root/rpmpkgs /tmp/backups/
• Đồng bộ giữa các server:
# rsync -avz backup/ root@192.168.1.165:/home/                  --local to remote
# rsync -avzh root@192.168.1.165:/root/data /backup/data1       --remote to local
• Đồng bộ qua SSH:
# rsync -avzhe ssh backup.tar root@192.168.0.100:/backups/      --local to remote
# rsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/   --remote to local
• Tìm kiếm : find
# find /data –name test.txt
# find /data –name test*
# find /data3 -type f -exec grep -l '123' {} \;
# find /data -type f -name "*.dup" -mtime +3 -exec rm -rf {} \;
Ngoài ra còn nhiều tùy chọn –size, -user, -perm
# man find
• Tìm thư mục chứa lệnh : which
# which ls
/usr/bin/ls
• Tìm 1 chuôi trong file
• # cat /data/test.txt | grep 123
• Nén/giải nén dùng gzip/gunzip:
# gzip /data/test1.txt
# gunzip /data/test1.txt.gz
• Dùng tar
# tar –cvf test.tar test.txt
# tar –cvfz test.tar.gz test.txt
# tar –vxf test.tar –C /data
# tar –xvfz test.tar.gz
• Tao/sửa tập tin văn bản : vi
# vi test.txt
:wq  Thoát và lưu văn bản
:q! Thoát và không lưu
i Vào mode insert từ ký tự bên trái
a Vào mode insert từ ký tự bên phải
x Xóa 1 ký tự
dd Xóa 1 dòng
yy Sao chép 1 dòng
p Paste
1-99%  Đi tới số % của văn bản
g Đi tới đầu văn bản
G Đi tới cuối văn bản

Chay background #nohup test_nohup.sh &
Folder
1. Check dung lượng thư mục
# du -hs *
# du -hs /u02/app
2. Copy thư mục
# cp -Rf /data/app1/ /u02/app2/  -- copy các file, thư mục trong app1 vào app2
# cp -Rf /data/app1 /u02/app2/    -- copy thư mục app1 vào thư mục app2
3. Xóa thư mục
# rm -rf /data/icc/app
4. Chuyển thư mục
# mv -f app /u02/ -- cung thư mục cha
5. SCP
# scp -r mc root@192.168.1.42:/u01/app/
6. Xóa file theo ngày
Solaris, AIX:
$ find /path/to/folder -mtime +3 -exec rm -f {} \;
Linux:
find /u01/app/oracle/diag/rdbms/gold/gold1/trace -type f -mtime +1 -print |xargs rm 

File
1. Null file
Giải phóng dung lượng
# /dev/null > log.txt
# cat /dev/null <file_name>
# rm <file_name>
2. Ls
# ls [cf]*   // start c or f
# ls [c-f]*   // start c-f
# ls touchtone.?.au //?: ky tu bat ky
3. Tạo file với dung lượng cho trước
# mkfile 2m /export/home/binhtv/test.dat

Lệnh VD Mô tả, ghi chú
cat cat /dev/null > /usr/local/apache2/logs/access_log Đưa file về dung lượng 0 KB
rm Folder:
        rm -rf /u01/app/*
        rm -rf /u01/app
        rm -rf /u01/app/
File:
        rm -r /u01/app/test_file.txt
        rm -rf /u01/app/*
mv mv file_name.txt file_new.txt
mv -rf /u01/app /u02/
tar Nén thư mục, file Khi nén folder đường dẫn dài (/u01/…/qlhs1/stage/qlhs/qlhs/) sau đó giải nén thì sẽ tạo đúng thư mục trước khi nén.
        tar -cvf folder.tar.gz folder for backing up, you use
        tar -cvf folder.tar folder [/backups]# tar -cvf /dev/rmt/tx5 /home/*.*
        tar cf folder.tar folder1 folder2 folder3/onlythispart & then you restore using
        tar -cvf folder.tar file.txt [/backups]# tar -xvf /dev/rmt/tx5 *
        tar cvf - cdc |gzip > cdc.tar.gz the files will be restored to /home & not /backups, but
       
        # backup configurations of WebLogic if you backup using 
        export v_date=`date +%Y%m%d` [/home]# tar -cvf /dev/rmt/tx5 *.*
        echo "Start backup configurations of WebLogic at $(date)" >> /u02/backup/log.txt & then restore using
        cd /u01; tar -cvf /u02/backup/oracle_wl_$v_date.tar oracle [/backups]# tar -xvf /dev/rmt/tx5 *
        echo "Finish backup configurations of WebLogic at $(date)" >> /u02/backup/log.txt the files will be restored to /backups
        
Giải nén file tar
        -- Giải nén thư mục hiện tại
        tar -xvf folder.tar.gz
        -- Giải nén sang thư mục khác
        cd /u01/weblogic; tar -xvf /export/home/binhtv/ttcp.tar
        
List file từ tar
        tar -tvf folder.tar.gz
gzip cp /u01/app/oracle/diag/rdbms/db*/trace/alert_gold* .
cp /u01/app/oracle/diag/asm/+asm/+ASM*/trace/alert_+ASM* .
gzip alert*log
gunzip cd /tmp
--Extract VMware Tools.

gunzip -c /cdrom/vmwaretools/vmware-solaris-tools.tar.gz | tar xf -
grep grep ErrorLog /etc/httpd/conf/httpd.conf Tìm kiếm nội dung từ file
find /usr/local/apache2 -type f -exec grep  'error' {} +
grep -R 'error' /usr/local/apache2
-- Tìm string trong các file ở đường dẫn /u01/app
find /u01/app -type f -exec grep -l "mc_update_info.delete_info" {} \;
find /u01/app -type f |wc -l
find find /path -mtime +10 -exec rm -f {} \;
# find . -name listener.log -exec ls -l {} \;
find / -perm -4000 -exec ls -ld {}  \;  > /tmp/output.log // {}: đặt kết quả câu lênh, \; kết thúc câu lệnh
--
find -maxdepth 1 -type d | while read dir; do 
    count=$(find "$dir" -maxdepth 1 -iname \*.jpg | wc -l)
    echo "$dir ; $count"
done
Pasted from <http://stackoverflow.com/questions/628662/unix-command-to-list-folders-with-file-counts> 
down vote
You can do it without external commands:
for d in */; do 
  set -- "$d"*.jpg
  printf "%s: %d\n" "${d%/}" "$#"
done
Or you can use awk (nawk or /usr/xpg4/bin/awk on Solaris):
printf "%s\n" */*jpg |
  awk -F\/ 'END { 
    for (d in _) 
      print d ":",_[d] 
      }
  { _[$1]++ }'
tail $ tail -5000l /u01/oracle/log/alert.log > /tmp/test.log    // Tạo file test.log chứa 5000 dòng cuối cùng
wc wc                   # Word count (characters, words, lines).
 wc -w                # Word count only.
 wc -l                # Line count.
mkfile $ date && mkfile 1G test.dat && date Tạo file dung lượng 1G
# mkfile 500m testfile&
# iostat -x 5
dd dd commands Tạo file dung lượng 80MB
dd         -- dataset definition, useful for taking backup of votedisks/Voting Disks
Arguments:
  if -- input file
  of -- output file
  bs -- block size
dd if=/dev/zero of=testfile bs=1024 count=1024000 --1G
dd if=/dev/zero of=testfile bs=1024 count=102400 --100MB
dd if=/dev/zero of=/tmp/test.dat bs=8k count=10000 
dd if=/u02/ocfs2/vote/VDFile_0 of=$ORACLE_BASE/bkp/VDFile_0
dd if=/dev/hdb2 of=/dev/sda5 bs=8192
dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=notrunc,noerror
dd if=/dev/zero of=/abc bs=1 count=1 conv=notrunc,ucase
dd if=/dev/cdrom of=/home/satya/myCD.iso bs=2048 conv=sync,notrunc,lcase
dd if=/dev/hda3 skip=9200 of=/home/satya/backup_set_3.img bs=1M count=4600
dd if=/home/satya/1Gb.file bs=64k | dd of=/dev/null
From <http://satya-racdba.blogspot.com/2013/03/dd-votedisks-voting-disk.html> 
scp scp -r mc root@192.168.1.42:/u01/app/
scp -f *.datroot@192.168.1.42:/u01/app/
# scp -r /home/binhtv root@192.168.1.114:/home/              // Copy toàn bộ thư mục /home/binhtv tới máy 114, thư mục /home
scp -o StrictHostKeyChecking=no  -r /u01/oracle/app/fmw/10.3.2/user_projects/domains/VMS_CLUSTER_DOMAIN_2 root@192.168.1.205:/u01/oracle/app/fmw/10.3.2/user_projects/domains/
for root@crmweb03 # more bk_apache.sh Copy loại trừ 1 thư mục
for file in "/usr/local/apache2/"*
do
    [[ $file = /usr/local/apache2/logs ]] && continue
    echo "Copying $file"
    scp -r $file root@192.168.1.42:/s02/backup_toht/crm_web2_48/apache
done
for file in $(find /u02/icc/app/ICC_MSC/FTPFILE/service/log/tmp/ -name 2013*.log) Tìm các file 2013*.log trong thư mục ../tmp
do
rm -rf $file
done
man # man <cmd>
Ctr + F: forward 1 trang
Ctrl + B: backward 1 trang
sed Commands
sed 's/txt/TXT/g'    # Scan and replace text, replace txt --> TXT
sed 's/txt//'        # Scan and delete text (deleted txt)
sed '/txt/q'         # Scan and then quit.
# echo '/s01!@#$%^&*()' | sed 's/[!@#\/$%^&*()]//g'
Hoặc:
# echo '/s01!@#$%^&*()' | sed "s/[^a-zA-Z0-9]*//g";
Hoặc:
# echo '/s01!@#$%^&*()' | sed 's/[^a-zA-Z0-9]*//g';
#ls -la |sed 's/txt/TXT/g'  // Hiển thị mọi file trong thư mục hiện tại và thay txt bằng TXT
Vi i insert
dd: xóa dòng hiện tại
esc: Thoát khỏi chế độ edit
:x hoặc :wq lưu và thoát
:q! thoát ko lưu
/string: tìm kiếm string
G: Chuyển đến dòng cuối dùng
Thư mục hiện tại, thư mục all format Fix tên file có ký tự Ctr+M (^M)
for f in $(find . -name "*.*
")
do
filename=${f%.*}
ext=${f##*.}
#echo ${filename} ${ext}
mv "${f}"* "${filename}.${ext}"
done
Thư mục hiện tại, thư mục con file JPG
for f in $(find . -name "*.jpg*")
do
filename=${f%.*}
echo ${f}
echo ${filename}
mv "${f}"* "${filename}.jpg"
done
Thư mục hiện tại
for f in $(ls *.jpg*)
do
filename=${f%.*}
echo ${f}
echo ${filename}
mv "${f}"* "${filename}.jpg"
done
Metacharacters
(*) ls f* // hiển thị file bắt đầu bằng f
(-) su - // đăng nhập với username trước đó
cd - // về thư mục trước đó
(?) ls dir?   // liệt kê các file, thư mục bắt đầu bằng dir theo sau là 1 ký tự
(~) Về thư mục home của user hiện tại
([]) Ls [a-f]* // liệt kê các file/folder bắt đầu bằng a-f
Ls [af]* // liệt kê các file/folder bắt đầu bằng a hoac f
(.) . .bash_profile: // chạy file cấu hình
(!)
> --Tạo file mới
Cat /etc/hosts > /tmp/hosts
>> -- Thêm New vào /tmp/hosts
Echo "New" >> /tmp/hosts

KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH: 📧 Mail: binhoracle@gmail.com ☎️ Mobile: 0902912888 ⚡️ Skype: tranbinh48ca 👨 Facebook: https://www.facebook.com/BinhOracleMaster 👨 Inbox Messenger: https://m.me/101036604657441 (profile) 👨 Fanpage: https://www.facebook.com/tranvanbinh.vn 👨 Inbox Fanpage: https://m.me/tranvanbinh.vn 👨👩 Group FB: https://www.facebook.com/groups/OracleDBAVietNam 👨 Website: http://www.tranvanbinh.vn 👨 Blogger: https://tranvanbinhmaster.blogspot.com 🎬 Youtube: http://bit.ly/ytb_binhoraclemaster 👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi 👨 Linkin: https://www.linkedin.com/in/binhoracle 👨 Twitter: https://twitter.com/binhoracle 👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội #OracleTutorial #OracleDBA #OracleDatabaseAdministration #học oracle database #oca #ocp #oce #ocm

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master