#chuyencuasys.com

“DevOps is bullshit”

Làm thế nào để pass vị trí System Engineer tại VNG (Part 2+) October 3, 2017

Như các bạn cũng đã theo dõi trong 2 phần trước, đáng lý giờ này mình phải viết part 3 cho việc “cách bày tỏ thái độ và deal lương như thế nào cho hiệu quả”, tuy nhiên mình vẫn chưa pass được vòng technical 🙁 và cũng chưa thực sự đề cập về những vấn đề technical trong bài viết trước, nên mình sẽ viết phần 2+ này để bổ sung.

Trong bài viết này sẽ viết ra những câu hỏi và gợi ý câu trả lời, không biết là có chính xác hay không nữa, vì người đánh giá và cho điểm câu trả lời câu hỏi là người khác, có thể đây là 1 dạng “tips and tricks” nhưng cũng có thể là những điều vớ vẫn nào đó, bạn chỉ có thể đọc và tham khảo, không nên đặt quá nhiều niềm tin vào nó nhé.:)

Ở VNG sẽ không có kiểu đưa ra 1 câu hỏi dạng đánh đố ứng viên, nhất là ở vị trí SE, tùy vào job detail mà bạn apply, ví dụ như vị trí Senior và SE ở đây. Các bạn nộp resume vào để thử sức và review vòng technical nhé.

Hôm nay có 1 bạn chia sẻ với mình 1 câu hỏi bạn ấy gặp khi phỏng vấn ở 1 công ty của Pháp, văn phòng tại HCM, theo mình thì nó là 1 dạng đánh đố, mặc dù nó không hề khó, nhất là lúc bạn có thời gian google hay suy nghĩ kỹ, tuy nhiên, trong lúc phỏng vấn, đây thực sự là vấn đề nếu bạn không thực sự “cứng”.

Câu hỏi: Không dùng vòng lặp (for, while), tạo được 1000 thư mục với prefix do bạn chỉ định?

Bạn mất bao nhiêu lâu để trả lời câu hỏi này? Đáp án ở cuối bài nhé!!!

Ngoài ra còn số câu hỏi có liên quan tới các kiến thức “thực sự rất cơ bản” mà bắt buộc bạn phải trả lời như sau:

  • Trình bày tổng quát về mô hình OSI, TCP/IP
  • Trình bày 1 số giao thức ở tầng 2/3
  • Trình bày 2 mode của FTP và điểm khác nhau

Ở mức độ cao hơn, câu hỏi sẽ tương tự như sau:

  • So sánh ưu khuyết điểm của nginx và haproxy khi làm 1 LB
  • Docker và các khái niệm liên quan
  • Database mysql, postgres, cassandra
  • Câu hỏi về IPTables

Ngoài ra còn 1 số câu hỏi khác như:

  • Giao thức Socket ở tầng mấy của mô hình OSI?
  • Một số lỗi bảo mật nghiêm trọng và cách xử lý

Trên đây là 1 số câu hỏi  mà mình sưu tầm được và theo trí nhớ của mình sau những lần phỏng vấn rớt ở đây, mong các bạn đóng góp thêm nhưng câu hỏi và câu trả lời tại đây nhé.

Đáp án của câu hỏi ở phía trên

Dùng shell bash :

mkdir -p yourprefix{1..1000}

 

No Comments on Làm thế nào để pass vị trí System Engineer tại VNG (Part 2+)

LÀM THẾ NÀO ĐỂ BIẾT MÌNH ĐANG ĐI ĐÚNG CON ĐƯỜNG September 4, 2017

Chào các bạn!

Đang trong kỳ nghỉ lễ quốc khánh 2/9 chắc là các bạn cũng có những trải nghiệm thú vị cùng bạn bè hoặc gia đình, riêng mình thì kỳ nghĩ lễ này cũng ko có plan đi đây đi đó nên rảnh rổi sinh nông nổi, ngồi viết vài câu chuyện tản mạn chia sẻ cùng các bạn, gọi là cho đỡ tẻ nhạt bớt trong kỳ nghỉ lễ này :v. Tiếp nối những seri linh ta linh tinh trước đó về chuyện đời chuyện nghề của 1 system admin, hôm này mình tiếp tục cùng bàn luận về topic nho nhỏ ” làm thế nào để biết mình đang đi đúng con đường ” theo cách nghĩ khách quan của bản thân mình thôi nha các bạn :-).

Ngược dòng xa xôi chút về những năm cuối cấp 3, thời điểm mà ai ai cũng có những lựa chọn riêng về  ngành nghề vs ước mơ sẽ theo đuổi, có người thì đã định hướng từ trước, có người thì cũng chả biết nên theo ngành nghề nào cứ tham khảo ý kiến ai đó, bạn bè or người quen rồi chọn trường theo, kiểu như mông lung như một trò đùa =)).

Chặng đường tiếp theo sau đó có lẽ là cánh cổng ĐH nơi bước đầu hiện thực hóa những hoài bảo, một chương mới trên con đường sự nghiệp được mở ra, ở đó thứ cho bạn có lẽ là những hành trang về nghề nghiệp để bước vào đời từ kiến thức chuyên môn của từng ngành nghề, kiến thức xã hội, mối quan hệ….

Sau khi có được tấm bằng ĐH (cử nhân, kỹ sư…) ai cũng đi tìm cho mình một công việc theo đúng chuyên môn được đào tạo, nhưng cuộc sống mà đâu phải lúc nào cũng theo ý ta, có bạn thì làm đúng chuyên môn, còn có bạn thì lại rẽ theo hướng khác. Nói về mình thì định hướng trước đó là làm về quản trị mạng, hệ thống nên sau khi tốt nghiệp ra trường cũng rán tìm một công việc có liên quan, nhưng những ngày đầu vì kiến thức, kỹ năng, kinh nghiệm làm việc ko nhiều nên cũng ít công ty nào để ý tới, thời điểm đó cũng rải CV như phát tờ rơi :v miễn là có một công việc để làm.

Sau những tháng ngày ròng rã tìm kiếm cv, chạy đi PV như là chạy show :v cũng chỉ tìm được ở những vị trí lèn tèn như Monitor, Vận hành hệ thống, thoạt nghe thì có chút dính líu tới chuyên môn nhưng vào làm thì chẳng có gì nhiều đâu các bạn, thao tác chính chủ yếu là các phím Crl  + C + V =)), Snipping Tool, theo dõi mấy cái biểu đồ màu mè hoa lá hẹ, các dòng log error đỏ lòm, có bất thường gì thì la lên cho các sếp mà thời đó đúng nghĩ là kiếp cầm ca (làm theo ca đó các bạn =)) ), dĩ nhiên là công việc khá chán rồi nhưng cũng gọi là có công việc để kiếm cơm qua ngày là zui zui gồi.

Một khoảng thời gian sau đó mình tìm được 1 vị trí system theo đúng chuyên môn mình mong đợi, công việc trước đó khá chán nhưn bù lại  là có chút time rảnh nên mình cũng tự đào sâu kiến thức qua những bài LAB, hỏi han các bậc tiền bối đi trước mới có cơ may tìm được cv phù hợp sau này. Những chặng đường sau đó và cho đến bây giờ thì mình đều đảm nhận vị trí là 1 system admin, công việc hiện tại vẫn cho mình những niềm vui & lợi ích nhất định, đặc biệt vẫn còn đam mê với nghề cho nên cũng gọi là đang đi đúng con đường mà mình lựa chọn trước đó mặc dù cũng đã trải qua những tháng này đen tối trong sự nghiệp :v, đó là điều hiển nhiên ai cũng đã từng trải qua.

Vậy thì câu hỏi “Làm thế nào để biết mình đang đi đúng con đường”, con đường ở đây là con đường sự nghiệp( con đường lớn) nói chung và trong nghê IT nói riêng(con đường nhỏ),không ai dám chắc là mình chỉ làm một công việc đó suốt đời, có thể nghề này rồi lại nghề khác(hoàn cảnh đẩy đưa :v) nhưng nếu xét ở một phạm vi nào đó trong những ngành nghề chúng ta đã từng làm thì cái gọi là “đúng con đường” có thể hiểu là ở giai đoạn đó, nghề đó, công việc đó mang lại cho bản thân ta những niềm vui, sự thành công nhất định, một sự hưng phấn, bầu nhiệt huyết và cả sự đam mê trong công việc . IT cũng không ngoại lệ, một khi trải qua những khoảng thời gian trước đó cho đến thời điểm hiện tại trong cái nghề mà bạn đã chọn, nó không mang lại nhiều thành công cho bạn, không tạo được cho bạn hứng thú trong khi làm việc hay nói cách khác là cảm giác chán việc chán nghề thì bạn có thể cân nhắc cho mình những hướng đi, ngã rẽ mới , biết đâu được bạn lại gặt hái được nhiều thành công hơn ở những con đường mới đó thì sao.

Hãy phá vỡ mọi giới hạn của bản thân, hiện thực hóa những ý tưởng đang tồn tại trong đầu bạn,  biến điều không thể thành có thể. Chúc các bạn thành công!

No Comments on LÀM THẾ NÀO ĐỂ BIẾT MÌNH ĐANG ĐI ĐÚNG CON ĐƯỜNG
Categories: Linh tinh

Đằng sau hệ thống Stack Overflow trông như thế nào? (Part 2) August 30, 2017

Tiếp tục câu chuyện ở part 1, trong bài viết này sẽ trình bày các thành phần tiếp theo của hệ thống Stack Overflow theo kiến trúc được cập nhật đến năm 2016.

Cache & Pub/Sub (Redis)

SO sử dụng Redis cho 2 việc là caching và pub/sub cho hệ thống, mặc dù chịu tải khoảng 160 tỷ câu lệnh trong vòng 1 tháng, những mỗi instance chỉ chạy khoảng 2% CPU, ở mức rất thấp. (Chắc chỉ tốn RAM).

SO sử dụng Redis làm caching 2 lớp L1/L2, L1 sử dụng cho HTTP Cache cho web server và bất kỳ ứng dụng nào đang chay, còn L2 dùng để lấy giá trị từ Redis, có thể hiểu là L1 dùng để write, còn L2 dùng để read. Giá trị của key trong Redis theo định dạng protobuf thông qua thư viện protobuf-dot-net của Marc Gravell.  Thư viện sử dụng cho client là StackExchange.Redis là một opensource và tự phát triển. Khi mà web server bị miss ở cả 2 L1 và L2, chúng sẽ lấy dữ liệu từ database thông qua query hoặc gọi API…và ghi kết quả vào cache local và Redis, khi đó 1 web server khác muốn lấy giá trị nào đó, có thể miss ở L1 nhưng chắc chắn sẽ lấy được ở L2 hoặc database hoặc thông qua việc gọi API.

Các trang Q&A đều có caching theo dạng key prefix thì đặt ở L1 còn L2 thì chứa database ID.

Bên cạnh 2 server Redis chạy master/slave cho toàn bộ các site hiện có, thì SO còn có thêm 1 server slave machine learning sử dụng cho việc thể hiện các câu hỏi khuyến nghị, job matching …được gọi là Providence.

Server Redis chính thì có 256GB RAM (96GB đã sử dụng) và Providence thì có 384GB RAM (125GB đã sử dụng).

Và tất nhiên không chỉ dùng để caching, SO còn dùng Redis theo cơ chế pub/sub để public 1 message cho toàn bộ subcriber bao gồm đã downstream ở Redis slave, SO dùng cơ chế này để xóa 1 lưu trữ trên L1 của 1 web server khi 1 web server khác bị loại bỏ khỏi tính đồng bộ của hệ thống.

Redis isn’t just for cache though, it also has a publish & subscriber mechanism where one server can publish a message and all other subscribers receive it—including downstream clients on Redis slaves. We use this mechanism to clear L1 caches on other servers when one web server does a removal for consistency, but there’s another great use: websockets.

(Đoạn này hơi rắc rối, mình xin phép để nguyên văn)

NetGain WebSockets

SO sử dụng websocket để push real-time cập nhật  của user ví dụ như các thông báo trên top bar, số lượng vote, hay câu hỏi hay câu trả lời mới và 1 vài thứ khác.

Và các server socket này sử dụng raw socket và chạy trên các web tier sử dụng thư viện StackExchange.NetGain, trong peak time( giờ cao điểm) ,số lượng kết nối đồng thời lên tới 500.000, và có những kết nối kéo dài 18 tháng, tác giả không chắc là người đó có tắt browser của mình hay có còn sống không nữa?

Search (Elasticsearch)

Nói chung là không có điều gì thú vị ở đây cả, SO sử dụng Elasticsearch 1.4 và thư viện StackExchange.Elastic cho client và sử dụng cho đường /search trên website, tính toán các câu hỏi có liên quan, và đề xuất khi đặt câu hỏi.

Mỗi cụm cluster ES đều có 3 node trên từng datacenter , và mỗi site đều đánh 1 index. Như site Careers thì có nhiều index hơn và được cấu hình theo 1 cách khác không theo dạng chuẩn, với 3 cụm cluster lớn hơn với SSD và 192 GB RAM và 2x10GBps cho card mạng.

Lý do chính để sử dụng ES là cho việc tìm kiếm full-text SQL một cách dễ dàng và ít chi phí hơn so với việc sử dụng database SQL. Vậy tại sao lại không dùng Solr thay thế cho ES? Việc này có thể xảy ra trong tương lai với version 2.x.

Databases (SQL Server)

SO sử dụng SQL Server là Single_source_of_truth , mọi dữ liệu trên Redis hay ES đều đến từ database và có 2 cụm cluster SQL Server được cài đặt, với mỗi cluster đều có 1 master và 1 replica ở New York, thêm vào đó là 1 replica ở Colorado, và tất cả các bản sao đều chạy bất đồng bộ.

Cụm đầu tiên bao gồm server Dell R720xd, mỗi con có 384GB Ram, 4TB PCIe SSD và 2×12 cores, chúng chứa Stack Overflow, Sites, PRIZM, và dữ liệu Mobile.

Cụm thứ 2 bao gồm server Dell R730xd, mỗi con có 768GB RAM, 6TB PCIe SSD và 2×8 core, chạy những thứ còn lại, bao gồm Talent, OpenID, Chat, Exception log và toàn bộ các trang Q&A ví dụ Super UserServer Fault

 

Mức sử dụng CPU hiện tại còn khá cao mặc dù đã được optimize, có thể thấy trong biểu đồ sau, với 04 là master, 01 và 03 là replica.

Thư viện

Dưới đây là toàn bộ các thư viện tự phát triển hoặc opensource được sử dụng cho SO.

  • Dapper (.Net Core) – High-performance Micro-ORM for ADO.Net
  • StackExchange.Redis – High-performance Redis client
  • MiniProfiler – Lightweight profiler we run on every page (also supports Ruby, Go, and Node)
  • Exceptional – Error logger for SQL, JSON, MySQL, etc.
  • Jil – High-performance JSON (de)serializer
  • Sigil – A .Net CIL generation helper (for when C# isn’t fast enough)
  • NetGain – High-performance websocket server
  • Opserver – Monitoring dashboard polling most systems directly and feeding from Orion, Bosun, or WMI as well.
  • Bosun – Backend monitoring system, written in Go

 

Sau một bài viết khá dài và chi tiết của tác giả Nick Craver, chúng ta có thể thấy được toàn bộ những gì phía sau của 1 hệ thống website vô cùng đồ sộ và đáp ứng được hàng triệu người dùng trên toàn thế giới. Bài viết của mình xin dừng ở đây và hi vọng sẽ trở lại với việc tìm hiểu những hệ thống lớn khác.

No Comments on Đằng sau hệ thống Stack Overflow trông như thế nào? (Part 2)

Con đường sự nghiệp của 1 *nix system admin July 25, 2017

Khi đã và đang làm việc như là 1 system admin, “một nghề cao quý trong những nghề cao quý”, bạn sẽ dần được trải qua những mốc ghi dấu của con đường sự nghiệp của mình, 1 vài giây nhìn lại những nấc thang mà bạn đã vượt qua, nếu như bạn sẽ và mới bắt đầu với con đường này, đây là bài viết cho bạn 1 cái nhìn tổng quan nhất, giúp bạn định hình được những thứ bạn sẽ phải trải qua, tuy khó khăn gian khổ, nhưng trái ngọt luôn chờ bạn 🙂

Level 0

Bắt đầu sẽ là 1 cái title dành cho các bạn học sinh, sinh viên, lúc còn đang học ở trường, trung tâm đào tạo …Đây là thời điểm bạn được bắt đầu làm quen với mọi thứ, những lý thuyết cơ bản nhất về mạng máy tính, về hạ tầng mạng và hệ thống, về lập trình cơ bản, về bảo mật và an toàn thông tin.. Tất cả là 1 mớ lý thuyết vô cùng to lớn được gói gọn trong 1 chương trình học cực kỳ ngắn, thường là 1-2 môn trong 1-2 học kỳ, hoặc là 1 khóa đào tạo ngắn hạn từ 3-4 tháng.  Bạn rất may mắn khi đã được trải qua level này với đầy đủ lý thuyết và phần thực hành tương xứng, nếu có những bài luận văn hay chứng chỉ về mạng và hệ thống trong thời điểm này hoặc được nhận vào thực tập ở 1 công ty lớn thì thật là tuyệt.

Bạn sẽ ghi toàn bộ những thứ mình học và làm được trong hồ sơ xin việc của mình và gửi nó đi khắp nơi, nếu may mắn, nghề sẽ chọn được bạn và bạn sẽ bắt đầu cuộc phiêu lưu của mình ở level khác.

Entry/Junior Level

Đây là level bạn sẽ bắt đầu khi mới vào nghề và từ 6 tháng đến 2 năm, và ở level này, bạn cần đạt được những yêu cầu như sau:

Về kiến thức hệ thống

“- Nắm vững kiến thức cơ bản về mạng: các protocol cơ bản (DHCP, ARP, DNS…), NAT & firewall, các trạng thái của kết nối TCP
– Nắm kiến thức cơ bản về phần cứng, chủ yếu là các chỉ số system utilization: CPU (# cores, frequency), RAM (frequency), Disk (IOPS)
– Các kiến thức cơ bản của OS (linux/Windows): process & thread, các service cơ bản, permission & policy
– Các kiến thức cơ bản về Databases: MySQL, Oracle, …”

Về kỹ năng vận hành

“- Có khả năng sử dụng các công cụ cơ bản để quản lý, theo dõi và phân tích các vấn đề kỹ thuật (ssh/Remote Desktop, ping, netstat, top/htop…)
– Hiểu & tuân thủ quy trình vận hành, cài đặt & bảo trì hệ thống
– Có khả năng xử lý sự cố mức độ thấp”

Về bảo mật

“- Có kiến thức cơ bản về các khái niệm bảo mật: ACL, virus, spyware, backdoor
– Có kiến thức, kỹ năng trong việc đảm bảo bảo mật mức thấp (setup firewall, sử dụng anti-virus)
– Tuân thủ quy trình và các nguyên tắc bảo mật”

Về nghiên cứu và ứng dụng

“- Có khả năng ứng dụng công nghệ mới vào công việc vận hành hàng ngày”

Mid Level

Đây là nấc thang tiếp theo, bạn sẽ đạt được sau khoảng từ 2 năm tới 3 năm 😀 nhanh hay lâu tùy thuộc vào bản thân của bạn, nhưng tối thiểu bạn phải đáp ứng được những yêu cầu sau:

Về kiến thức hệ thống

“- Nắm vững kiến thức chuyên sâu về mạng: phân biệt & hiểu rõ tất cả các tầng của OSI model
– Nắm vững kiến thức về quá trình phần cứng vận hành & sự phối hợp của các phần cứng trong một hệ thống
– Có kiến thức về optimization, high scalibility, high performance, high availability”

Về kỹ năng vận hành

“- Có khả năng tối ưu hóa hệ thống ở mức vừa (tăng ít nhất 10% hiệu suất hệ thống có sẵn, có ít nhất 5 server)
– Có khả năng xử lý, tìm ra nguyên nhân & khắc phục các sự cố có độ phức tạp vừa
– Vận hành, theo dõi & bảo trì bằng script (automation)
– Theo dõi & phát hiện các nguy cơ tiềm ẩn trong hệ thống mình quản lý & theo dõi”

Về bảo mật

“- Thực hiện kiểm tra & đánh giá nguy cơ bảo mật định kỳ & mỗi khi hệ thống được cập nhật
– Có khả năng khắc phục, xử lý các sự cố liên quan đến bảo mật ở mức độ vừa (xử lý backdoor/virus, vá lỗ hổng bảo mật…)”

Về nghiên cứu và ứng dụng

“- Chủ động nghiên cứu, đánh giá các công nghệ mới để áp dụng vào công việc vận hành chung của team”

Senior Level 

Đây là thành quả cày cuốc của bạn sau từ 3-5 năm, bạn sẽ đạt được level này:

Về kiến thức hệ thống

“- Nắm vững kiến thức chuyên sâu về hệ điều hành: Linux kernel, Windows architecture (kernel, drivers, HAL…)
– Có kiến thức về thư viện, framework mà các software service sử dụng (libc, jdk, php, .NET…)”

Về kỹ năng vận hành

“- Có thể thiết kế, tư vấn, đánh giá & triển khai các giải pháp kỹ thuật phức tạp cho hệ thống lớn (>20 server)
– Quản lý và phân công các team giải quyết các sự cố có độ phức tạp cao
– Chịu trách nhiệm chính, ra quyết định trong các dự án lớn”

Về bảo mật

“- Chuyên sâu trong lĩnh vực bảo mật: có cơ chế/giải pháp hạn chế các rủi ro bảo mật có thể xảy ra
– Hỗ trợ, tư vấn trong việc phòng chống, điều tra và xử lý các lỗi bảo mật trong phạm vi toàn công ty”

Về nghiên cứu và ứng dụng

“- Có khả năng tự nghiên cứu, phát triển & triển khai các giải pháp phức tạp phục vụ cho mục tiêu tối ưu hóa công nghệ, mang lại lơi ích kinh doanh (tính năng ưu việt, cắt giảm chi phí…)”

Bài viết chỉ mới đề cập tới các level liên quan tới cấp bậc là nhân viên, chưa đề cập tới các cấp bậc khác như trưởng nhóm, giám sát hay quản lý và cũng là ý kiến chủ quan của cá nhân mình nên có thể không đúng hoàn toàn khi áp dụng vào công ty hay cho bản thân bạn, vì hiện tại mình cũng chưa trải qua những cấp bậc đó nên chưa viết 🙂 Đón đọc blog của mình sau 5 – 10 năm nữa nhé.

2 Comments on Con đường sự nghiệp của 1 *nix system admin

Rsync – Remote sync June 9, 2015

Giới thiệu sơ lược:

Rsync (Remote sync), là 1 công cụ đồng bộ dữ liệu( file, thư mục) giữa các remote server hoặc local thường được sử dụng trong môi trường *nix thay cho lệnh cp thông thường.

Một số đặc điểm:

  • Rsync đồng bộ hóa 2 nơi bằng cách copy dữ liệu theo dạng block (mặc định) chứ không copy theo dạng file(có option riêng hỗ trợ) , bên tốc độ được cải thiện nhiều khi áp dụng với file, thư mục có dung lượng lớn.
  • Rsync cho phép mã hóa dữ liệu trong qúa trình tranfer sử dụng ssh, nên qúa trình này được bảo mật.
  • Rsync cho phép tiết kiệm băng thông bằng phương pháp nén dữ liệu ở nguồn và giải nén ở đích, tuy nhiên việc này tốn thêm 1 lượng thời gian đáng kể.
  • Một điểm đặc biệt của rsync là cho phép giữ nguyên được tất cả các thông số của thư mục và file (sử dụng tham số -a)  : Recursive mode, Symbolic links, Permissions, TimeStamp, Owner và group
  • Rsync không yêu cầu quyền super-user.
  • (Xem thêm qua man rsync)

Cài đặt:

Cài đặt tương đối dễ dàng trong tất cả các bản phân phối

Cách sử dụng:

Câu lệnh chung:

rsync -options SRC DEST

  • Đồng bộ hóa trên local:

rsync -a ~/backup-Code/ ~/tmp/

  • Push lên remote server:

rsync -a /home/nhanpt5/backup-Code/ [email protected]:~/Codebk/Push

  • Pull từ remote server:

rsync -a [email protected]:~/Codebk/Push /home/nhanpt5/backup-Code/Pull

Một số tham số cần biết (flags):

-v: hiển thị kết quả

z: dữ liệu trên đường truyền sẽ được nén lại. Có nghĩa là nén ở nguồn và giải nén ở đích, điều này giúp tiết kiệm băng thông khi phải đồng bộ một lượng dữ liệu lớnd

-d: chỉ đồng bộ cây thư mục, không đồng bộ file

-P: quan sát qúa trình đồng bộ dữ liệu

-a: cho phép giữ nguyên được tất cả các thông số của thư mục và file

Một số tùy chọn cần biết (options):

-delete : Xóa file, thư mục ở đích

Sử dụng option –delete nếu bạn ở trong trường hợp sau: Nếu muốn đồng bộ hoàn toàn giữa 2 nơi, các file, folder ở đích mà không tồn tại ở server nguồn sẽ bị xóa bỏ để đảm bảo server đích là bản sao hoàn chỉnh của server nguồn.

-u: không ghi đè dữ liệu ở thư mục đích

Sử dụng option –u trong trường hợp bạn chỉ muốn đồng bộ những file, folder chưa tồn tại ở server đích. Những file đã tồn tại (đã được đồng bộ rồi) thì không đồng bộ nữa.

-existing: không tạo file mới ở đích

Chỉ muốn sync các file đã tồn tại ở đích (kiểu như update), không tạo các file mới. Sử dụng option -existing

-W:

Nếu bạn có băng thông rộng, CPU xử lý tốt, bạn có thể sử dụng option này để copy theo file. Ưu điểm là tốc độ sẽ nhanh hơn, không checksum tại server nguồn và đích. Sử dụng option -W

Ngoài ra còn nhiều tham số khác, tham khảo thêm phần man rsync

Áp dụng:

Rsync không hỗ trợ phần lập lịch tự động backup nên thường được sử dụng kèm với 1 công cụ khác để thực hiện 1 số công việc nhất định. Ví dụ: Dùng crontab kết hợp rsync, ssh để thực hiện việc push dữ liệu lên server hàng ngày. Ta sẽ thực hiện như sau:

Kịch bản:
Backup thư mục ~/Code hàng ngày (server local) và gửi lên server(192.168.1.128) chứa code tại thư mục ~/Codebk
Thiết lập chứng thực ssh bằng private key, đăng nhập server 192.168.1.128 không cần mật khẩu.
1. Dùng script backupfile để nén thư mục: vi ~/backup-Code/backupfile
#!/bin/bash
date=$(date +”%m-%d-%Y”)
filename=$date-backup.zip
source_folder=/home/nhanpt5/Code
dest_folder=/home/nhanpt5/backup-Code
# add folder to zip file
zip -r $dest_folder/$filename $source_folder > /dev/null
Cho chạy vào 3 a.m hàng ngày bằng cron
2. Dùng script tranfer để chuyển file backup lên server và xóa file ở local
#!/bin/bash
date=$(date +”%m-%d-%Y”)
filename=$date-backup.zip
dest_folder=/home/nhanpt5/backup-Code
#tranfer zip file to remote server dùng rsync
rsync -av $dest/$filename  [email protected]:~/Codebk/
#delete zip file
rm -f $dest_folder/$filename
Cho chạy vào 3.30 a.m hàng ngày bằng cron
Thông tin crontab -l
0 3 * * * ~/backup-Code/backupfile
30 3 * * * ~/backup-Code/tranfer >~/backup-Code/bk.log 2>&1
2 Comments on Rsync – Remote sync