首先承諾:對於從Windows系統遷移過來的用戶,困擾你們的 「Linux系統下是否能夠把系統文件和用戶文件分開到C盤和D盤中」 的問題也能夠獲得完滿解決。html
以前的文章對Linux的文件系統有過粗略的介紹,可是瞭解文件系統結構後,有什麼用途呢?在本章節將圍繞 "基於用戶角度的Linux下的數據備份和遷移" 的場景,對Linux文件系統相關知識進行實地應用,產生生產力 。前端
在瞭解Linux文件系統以後,就能夠 藝高人膽大 玩轉Linux的文件目錄了。java
本文案例 --- "基於用戶角度的Linux下的數據備份和遷移" 的使用場景描述以下:python
發生在安裝了新系統以後,須要將舊系統的數據進行復制或者是遷移,用戶須要知道哪些數據是須要遷移的,哪些數據是須要備份的,以最小的代價實現文件的備份和遷移。android
涉及的數據類型主要有:git
在以前章節的文章裏面提到過由 Linux Foundation 提出的對Linux各分支進行的文件目錄的相關約定標準 : Linux的FHS(Filesystem Hierachy Standart)。github
FHS把Linux的文件系統按照 "是否可變" 與 "是否可分享" 將全部目錄大概分紅四類:mongodb
shareable | unshareable | |
---|---|---|
static |
|
|
variable |
|
|
最大的基準分類框架就如上表所示。對於初識Linux的人來講,看到根目錄下的一系列的文件確定會感到困惑。因此徹底有必要對FHS相關規定進行研究,這樣有以下好處:chrome
本文所指的用戶數據是指,對比標準化的原生系統,由用戶或者系統管理員在使用過程當中產生的修改化配置或者安裝的文件。shell
每新建一個用戶,都會在此目錄下面創建一個和用戶名相同名稱的目錄,用於存儲此用戶產生的文件數據和用戶個性化配置數據。
經過命令行列出全部的用戶目錄文件:
➜ ~ ls -a . .gconf .pip .Xauthority .. .Genymobile .pki .xinputrc .adobe .gimp-2.8 .profile .xmind .android .gitconfig proxychains-ng .xsession-errors .AndroidStudio1.3 .gksu.lock Public .xsession-errors.old .bash_history .gnome .PyCharm40 .zcompcache .bash_logout .gnome2 pycharm-config.jar .zcompdump .bashrc .gphoto record-demo-plus-hold.mp4 .zcompdump-zheng-desktop-5.0.2 .cache .gradle .sample-music .zsh_history .config .gstreamer-0.10 shortcuts-images .zshrc .cr3 .icons .ssh .zshrc.pre-oh-my-zsh .cxoffice .java .ssr .zsh-update .dbus .kingsoft Templates 公共的 .dde-dock-applets.ini KuaiPan Tencent Files 模板 Desktop .local .themes 視頻 .dlockpid .macromedia .thumbnails 圖片 .dmrc .mozilla .thunderbird 文檔 Documents Music .viminfo 下載 Downloads .oh-my-zsh .viminfo.tmp 音樂 .esd_auth .pam_environment .wireshark 桌面 .filezilla Pictures .wiznote
如上主要分爲以下幾類文件:
視頻、圖片、文檔、下載、音樂、桌面
和桌面應用程序相關的程序的配置文件,以 . 點號開頭,默認的隱藏文件,例如:
對應用戶登陸的時候,會加載的環境變量
每次使用當前用戶開啓 bash shell 的時候要執行的腳本
在用戶數據遷移的時候,很關心的是應用程序的配置信息,關於用戶應用程序配置文件的目錄有兩個地方:
用戶目錄下的隱藏配置文件,前端已經介紹,在 .config 目錄下面還有一些:
➜ .config cd /home/zheng/.config ➜ .config ls -a . deepin_monitors.json eog htop Pencil Trolltech.conf .. deepin-movie fcitx ipython pulse ubuntukylin autostart deepin-software-center fcitx-qimpanel kingsoft QtProject.conf user-dirs.dirs bleachbit deepin-terminal geany Kingsoft ReText project user-dirs.locale calibre deepin-ui gedit launcher robomongo yelp chromium desktop Genymobile liteide shutdown youdao-dict compiz-1 dock git matplotlib SogouPY zone dconf Dolezel google-chrome menus SogouPY.users dde-daemon dra gtk-2.0 nautilus sogou-qimpanel deepin DUI gtk-3.0 not_first_run_dde sublime-text-2
用戶所安裝的主要的桌面應用程序的配置文件都在此處,例如:
金山辦公套件配置文件
谷歌Chrome瀏覽器的用戶配置及用戶數據存儲目錄
mongodb數據庫的客戶端操做軟件
說了這麼多,這些配置文件具體有什麼做用呢?舉兩個最簡單的例子:
若是作系統管理員,必然會少不了使用相應的客戶端軟件來管理多個服務器( 文件服務器 或者 數據庫服務器 ),在用戶使用Linux Desktop的過程當中,有些客戶端軟件會不斷的積累應用程序配置文件,例如:
FTP客戶端配置數據:
Mongodb客戶端配置數據:
若是將上述提到的配置目錄複製到新的機器下面,再打開相應的客戶端軟件的時候,這些配置信息都會跟隨着遷移過去(其實本質上是裏面的配置文本數據遷移過去了,此處爲了簡便,乾脆整個目錄一塊兒遷移過去了)
關於etc目錄的全稱,比較公認的說法是 Editable Text Config :可編輯的文本配置文件。
裏面主要存放系統運行時所用到的一些文本配置文件。例如:除去用戶密碼這些信息外,基本上全部的和服務器應用程序相關的配置文件都存放在此處。關於此目錄下具體的文件的意義,此處也再也不贅述,在進行遷移和備份的時候,須要擇取所須要的配置文件進行遷移備份便可。
若是是Linux服務器系統管理員,打交道最多的目錄應該就是 etc 目錄了,搭建各類服務器必然要處理的配置目錄。
經過命令行,查看此目錄下的文件:
➜ /opt ls -a . .. cxoffice deepin-boot-maker google kingsoft Point ubuntukylin
此目錄是部分應用程序的安裝目錄,通常狀況是指經過 deb/rpm 文件或者是 make 的方式安裝的時候,應用程序的目錄會放在此處。
例如:
chrome瀏覽器安裝目錄
金山辦公套件應用程序安裝目錄
這些應用程序都經過 deb 包安裝的。
var目錄主要存放一些常常變化的數據,例如:
郵件數據
系統應用程序或者用戶應用程序的日誌,主要是文本文件。
這一塊是隨着系統不斷運行的過程當中會不斷變化的。這一塊的數據不是系統運行所必須的,可是對於系統管理員排查應用程序運行中的狀態值頗有幫助。
usr的全稱是 Unix Software Resource ,專門用來存放Unix系統的安裝軟件,在/opt目錄不一樣的是,此目錄通常存放的是經過 命令行安裝的應用程序,例如,在ubuntu下面通常存放的是經過 apt-get install 安裝的應用程序。
此目錄下的主要文件目錄以下:
➜ /usr ls -a . .. bin games include lib local sbin share src
基本上,只要將此目錄遷移到新系統中,舊系統中經過 apt-get install 安裝的應用程序也會遷移過去了。
使用rsync命令能夠實現文件的同步遷移。
使用 man rsync 命令能夠查看rsync的具體用法:
NAME rsync - a fast, versatile, remote (and local) file-copying tool SYNOPSIS Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
rsync 是一種極其快速並且萬能的複製工具,主要功能以下:
主要的 OPTION 參數能夠經過 man rsync 命令查看
在本文中向新的系統作數據遷移時主要用到的是歸檔功能,相應的命令以下:
rsync -avzP src_dir dest_dir
v verbose 輸入命令執行的中間過程
z compress 對同步中的文件進行壓縮傳送(至關以耗費CPU計算資源來節省傳送的IO成本)
P progress 傳送過程當中的詳細進度百分比
通常狀況下,只須要使用 rsync 命令,將用戶所須要遷移的數據進行相應的目錄同步拷貝便可。
Linux系統下面沒有Windows系統下所謂的註冊表。能夠將Linux系統理解爲一個「純綠色」的軟件安裝系統。至於爲什麼有些程序能夠直接(不須要指定路徑)經過命令行的方式啓動,有些則不能,這個和「註冊表」無關,只是由於此應用程序若是採用標準安裝方式,系統會在環境變量PATH 目錄下面生成一個軟連接而已。
經過Linux的文件遷移實驗,能夠清楚瞭解Linux文件系統中的各類文件是如何各司其責,並存放在相應的目錄下的,而後就不會產生「由於不瞭解,因此懼怕」的爲難情緒了。
關於遷移到新系統後,應用程序如何遷移,本文提供的是直接文件級別的複製,還有一種自動化的方法就是基於命令行的批處理文件的執行安裝,若是有比較快速的網絡,推薦執行命令行自動化安裝(後面會奉上文章)。
做者: | Harmo哈莫 |
---|---|
做者介紹: | https://zhengwh.github.io |
技術博客: | http://www.cnblogs.com/beer |
Email: | dreamzsm@gmail.com |
QQ: | 1295351490 |
時間: | 2015-10-02 |
版權說明: | 未經許可,嚴禁用於商業目的的非法傳播 |
聯繫或打賞: | http://zhengwh.github.io/contact-donate.html |