<!DOCTYPE html>
    <html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
    <head>
<title>Cách sao lưu Raspberry Pi</title>
<meta name="description" content="Cách sao lưu Raspberry Pi - Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;cach-sao-luu-raspberry-pi-9553.html">
<meta name="author" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :.">
<meta name="copyright" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :. [admin@nguoicodonvn2008.info]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index,archive,follow,noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.5">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Cách sao lưu Raspberry Pi">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;cach-sao-luu-raspberry-pi-9553.html">
<meta property="og:site_name" content=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.">
<meta property="og:url" content="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-sao-luu-raspberry-pi-9553.html">
<link rel="shortcut icon" href="https://nguoicodonvn2008.info/favicon.ico">
<link rel="canonical" href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-sao-luu-raspberry-pi-9553.html">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/karaoke-dual/" title="Tin Tức - Karaoke Dual" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/nhac-tre/" title="Tin Tức - Nhạc trẻ" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tru-tinh/" title="Tin Tức - Trữ tình" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/nuoc-ngoai/" title="Tin Tức - Nước ngoài" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/remix/" title="Tin Tức - Remix" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tam-su-tinh-yeu/" title="Tin Tức - Tâm sự tình yêu" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tho-suu-tam/" title="Tin Tức - Thơ sưu tầm" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/cuoc-song/" title="Tin Tức - Cuộc sống" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/phan-mem/" title="Tin Tức - Phần mềm" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/kien-thuc-may-tinh/" title="Tin Tức - Kiến thức máy tính" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/hoc-tap/" title="Tin Tức - Học tập" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tai-lieu/" title="Tin Tức - Tài liệu" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/de-thi/" title="Tin Tức - Đề thi" type="application/rss+xml">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/style.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/news.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/custom.css" type="text/css">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/bootstrap.min.js" type="text/javascript">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/style.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://nguoicodonvn2008.info/themes/default/css/news.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/custom.css">
<style type="text/css">
	body{background: #fff;}
</style>
    </head>
    <body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">.&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.</h2>
		<p class="pull-right"><a title=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;." href="https://nguoicodonvn2008.info/">https://nguoicodonvn2008.info</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Cách sao lưu Raspberry Pi</h1>
		<ul class="list-inline">
			<li>Thứ ba - 17/12/2024 22:47</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
		</div>
				<div class="imghome">
			<img alt="Cách sao lưu Raspberry Pi" src="https://st.quantrimang.com/photos/image/2024/12/17/sao-luu-raspberry-pi-1.jpg" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<p style="text-align: justify;">Sao lưu Raspberry Pi không quá phức tạp. Mặc dù có nhiều giải pháp sao lưu tinh vi, đôi khi cách tiếp cận đơn giản lại hiệu quả nhất. Bài viết này sẽ chỉ cho bạn cách sử dụng rsync – một công cụ dòng lệnh nhỏ nhưng mạnh mẽ, hoàn hảo để tạo bản sao lưu cục bộ đáng tin cậy cho&nbsp;thiết lập Raspberry Pi&nbsp;của bạn.</p>

<h2 id="mcetoc_1ifa29c782n5" style="text-align: justify;">Sử dụng Rsync để sao lưu các file và thư mục Raspberry Pi</h2>

<p style="text-align: justify;">Cách đơn giản nhất để sao lưu một thư mục là sử dụng lệnh:</p>

<pre id="pre0">
<code>rsync -av /source/directory /backup/location</code></pre>

<p style="text-align: justify;">Ví dụ, để sao lưu thư mục root vào ổ cứng ngoài được mount tại “/media/backup”, hãy sử dụng lệnh:</p>

<pre id="pre1">
<code>rsync -av --delete /home/david/immich-app /media/backup</code></pre>

<p style="text-align: justify;">... để sao lưu cơ sở dữ liệu thư viện ảnh.</p>

<figure>
<div style="text-align: justify;"><img alt="Sao lưu thư mục Rsync Raspberry" data-i="0" data-src="https://st.quantrimang.com/photos/image/2024/12/17/sao-luu-raspberry-pi-1.jpg" data-was-processed="true" height="578" src="https://st.quantrimang.com/photos/image/2024/12/17/sao-luu-raspberry-pi-1.jpg" width="800" /></div>

<figcaption>
<div style="text-align: justify;">Sao lưu thư mục Rsync Raspberry</div>
</figcaption>
</figure>

<p style="text-align: justify;">Sau đây là những gì các tùy chọn khác nhau thực hiện:</p>

<ul>
	<li style="text-align: justify;"><strong>-a</strong>&nbsp;kích hoạt chế độ lưu trữ, chế độ này bảo toàn quyền, quyền sở hữu và timestamp của file</li>
	<li style="text-align: justify;"><strong>-v</strong>&nbsp;cung cấp đầu ra chi tiết để bạn có thể xem những gì đang được sao chép.</li>
	<li style="text-align: justify;"><strong>--delete</strong>&nbsp;xóa các file khỏi vị trí sao lưu không còn tồn tại trong nguồn.</li>
</ul>

<p style="text-align: justify;"><strong>Lưu ý</strong>: Bạn cũng nên biết rằng rsync đặc biệt chú ý đến dấu gạch chéo theo sau trong đường dẫn. Dấu gạch chéo theo sau trên nguồn có nghĩa là &quot;sao chép nội dung của thư mục này&quot; chứ không phải chính thư mục đó. Ví dụ,&nbsp;<strong>rsync -av --delete /home/pi/folder /media/backup</strong>&nbsp;sao chép nội dung của ‘folder’ trực tiếp vào ‘backup’, trong khi bỏ dấu gạch chéo sao chép chính thư mục ‘folder’ vào ‘backup’.</p>

<h3 id="mcetoc_1ifa29c782n6" style="text-align: justify;">Xác minh bản sao lưu Raspberry Pi</h3>

<p style="text-align: justify;">Trước khi dựa vào bản sao lưu, bạn nên xác minh rằng nó hoạt động chính xác. Cách đơn giản nhất để kiểm tra là sử dụng tùy chọn chạy thử với rsync, có thể được chỉ định là&nbsp;<strong>-n</strong>&nbsp;hoặc&nbsp;<strong>--dry-run.</strong>&nbsp;Chạy lệnh:</p>

<pre id="pre2">
<code>rsync -avn --delete /home/pi/folder /media/backup</code></pre>

<p style="text-align: justify;">... sẽ hiển thị không có file nào cần chuyển nếu bản sao lưu của bạn được cập nhật.</p>

<figure>
<div style="text-align: justify;"><img alt="" data-adbro-processed="true" data-i="1" data-src="https://st.quantrimang.com/photos/image/2024/12/17/sao-luu-raspberry-pi-2.jpg" data-was-processed="true" height="585" src="https://st.quantrimang.com/photos/image/2024/12/17/sao-luu-raspberry-pi-2.jpg" width="800" /></div>
</figure>

<p style="text-align: justify;">Để xác minh kỹ lưỡng hơn, bạn có thể thêm tùy chọn&nbsp;<strong>-c</strong>&nbsp;hoặc&nbsp;<strong>--checksum</strong>&nbsp;vào lệnh rsync của mình. Mặc dù chậm hơn so với so sánh timestamp và kích thước mặc định, nhưng điều này đảm bảo rằng mọi file đều hoàn toàn giống hệt nhau giữa nguồn và bản sao lưu bằng cách tính toán checksum. Chỉ cần chạy:</p>

<pre id="pre3">
<code>rsync -avc --delete /home/pi/folder /media/backup</code></pre>

<p style="text-align: justify;">Cách chi tiết nhất để xác minh bản sao lưu của bạn là sử dụng lệnh diff, lệnh này sẽ so sánh mọi file và thư mục giữa vị trí nguồn và vị trí sao lưu. Để thực hiện xác minh này, hãy sử dụng:</p>

<pre id="pre4">
<code>diff -r /home/pi/folder /media/backup/folder</code></pre>

<p style="text-align: justify;">Tùy chọn&nbsp;<strong>-r</strong>&nbsp;yêu cầu diff kiểm tra tất cả các thư mục con theo cách đệ quy. Nếu lệnh không tạo ra đầu ra, điều đó có nghĩa là bản sao lưu giống hệt với nguồn. Nếu có sự khác biệt, diff sẽ cho bạn biết chính xác những file nào khác hoặc bị thiếu.</p>

<h2 id="mcetoc_1ifa29c782n7" style="text-align: justify;">Tạo bản sao lưu đầy đủ của Raspberry Pi bằng Rsync</h2>

<p style="text-align: justify;">Trong một số trường hợp, việc sao lưu toàn bộ thẻ SD Raspberry Pi của bạn có thể thuận tiện và an toàn hơn thay vì chỉ một số ít thư mục quan trọng.</p>

<p style="text-align: justify;">Để tạo bản sao lưu đầy đủ của Raspberry Pi bằng rsync, bạn sẽ cần một đích sao lưu - một thẻ SD khác hoặc ổ cứng ngoài có đủ dung lượng để chứa toàn bộ hệ thống của bạn. Ổ sao lưu phải được định dạng bằng hệ thống file tương thích với Linux như ext4 để bảo toàn tất cả các quyền và thuộc tính của file một cách chính xác.</p>

<p style="text-align: justify;">Phần khó nhất khi sao lưu toàn bộ hệ thống Raspberry Pi là xử lý đúng các thư mục và file hệ thống đặc biệt. Theo kinh nghiệm, giải pháp dễ nhất là loại trừ các thư mục hệ thống không cần sao lưu hoặc có thể gây ra sự cố nếu khôi phục. Tạo một file có tên “backup-exclude.txt” và thêm các thư mục hệ thống sau đây cần được loại trừ khỏi bản sao lưu:</p>

<ul>
	<li style="text-align: justify;">/proc/* # Thông tin tiến trình runtime</li>
	<li style="text-align: justify;">/sys/* # Thông tin hệ thống và kernel</li>
	<li style="text-align: justify;">/dev/* # File thiết bị</li>
	<li style="text-align: justify;">/tmp/* # File tạm thời</li>
	<li style="text-align: justify;">/run/* # Dữ liệu runtime</li>
	<li style="text-align: justify;">/mnt/* # Điểm mount</li>
	<li style="text-align: justify;">/media/* # Phương tiện di động</li>
	<li style="text-align: justify;">/home/pi/.cache/* # File cache người dùng</li>
	<li style="text-align: justify;">/lost+found # Thư mục khôi phục hệ thống file</li>
</ul>

<p style="text-align: justify;">Với các loại trừ này, bạn có thể đóng nhiều ứng dụng đang chạy nhất có thể rồi thực hiện lệnh sao lưu sau:</p>

<pre id="pre5">
<code>sudo rsync -avxhP --delete --exclude-from=/home/pi/backup-exclude.txt / /media/backup/rootfs/</code></pre>

<p style="text-align: justify;">Tùy chọn&nbsp;<strong>-x</strong>&nbsp;ngăn rsync vượt qua ranh giới hệ thống file, điều này có thể gây ra sự cố với các thư mục hệ thống. Tùy chọn&nbsp;<strong>-h</strong>&nbsp;khiến rsync hiển thị kích thước file và tốc độ truyền ở định dạng dễ đọc đối với con người.</p>

<h3 id="mcetoc_1ifa29c782n8" style="text-align: justify;">Tự động sao lưu rsync</h3>

<p style="text-align: justify;">Mặc dù sao lưu đầy đủ được tạo thủ công rất hữu ích, nhưng nhiều người thích tự động hóa chúng bằng trình lập lịch cron tích hợp của Linux. Để thiết lập, hãy tạo một file có tên là “backup-pi.sh” trong thư mục root với nội dung sau:</p>

<pre id="pre6">
<code>#!/bin/bash
BACKUP_DRIVE=&quot;/media/backup&quot;
LOG_FILE=&quot;/home/pi/backup-log.txt&quot;
# Check if backup drive is mounted
if ! mountpoint -q $BACKUP_DRIVE; then
    echo &quot;Backup drive not mounted at $BACKUP_DRIVE&quot; &gt;&gt; $LOG_FILE
    exit 1
fi
# Create timestamp for logging
date &gt;&gt; $LOG_FILE
# Run backup with error checking
sudo rsync -avxhP --delete \
    --exclude-from=/home/pi/backup-exclude.txt \
    / $BACKUP_DRIVE/rootfs/ \
    &gt;&gt; $LOG_FILE 2&gt;&amp;1
# Record backup completion
echo &quot;Backup finished at 18/12/2024&quot; &gt;&gt; $LOG_FILE
echo &quot;-------------------&quot; &gt;&gt; $LOG_FILE</code></pre>

<p style="text-align: justify;">Làm cho script có thể thực thi được bằng&nbsp;<strong>chmod +x backup-pi.sh</strong>, sau đó lên lịch bằng cron. Nhập&nbsp;<strong>crontab -e</strong>&nbsp;và thêm dòng này để chạy sao lưu hàng ngày vào lúc nửa đêm:</p>

<pre id="pre7">
<code>0 0 * * * /home/pi/backup-pi.sh</code></pre>

<figure>
<div style="text-align: justify;"><img alt="" data-i="2" data-src="https://st.quantrimang.com/photos/image/2024/12/17/sao-luu-raspberry-pi-3.jpg" data-was-processed="true" height="581" src="https://st.quantrimang.com/photos/image/2024/12/17/sao-luu-raspberry-pi-3.jpg" width="800" /></div>
</figure>

<h2 id="mcetoc_1ifa29c782n9" style="text-align: justify;">Khôi phục bản sao lưu Rsync Raspberry Pi</h2>

<p style="text-align: justify;">Để khôi phục các file hoặc thư mục riêng lẻ, quy trình này rất đơn giản. Chỉ cần hoán đổi nguồn và đích trong lệnh rsync. Ví dụ, để khôi phục thư viện ảnh từ bản sao lưu:</p>

<pre id="pre8">
<code>rsync -av /media/backup/home/david/immich-app/ /home/david/immich-app/</code></pre>

<p style="text-align: justify;">Để khôi phục toàn bộ hệ thống, trước tiên bạn cần cài đặt lại Raspberry Pi OS trên thẻ SD của mình. Bắt đầu bằng cách cài đặt bản sao mới của Raspberry Pi OS trên thẻ SD mới. Sau khi hoàn tất, hãy khởi động Pi bằng thẻ SD mới và hoàn tất quy trình thiết lập ban đầu. Tiếp theo, kết nối ổ đĩa sao lưu của bạn với Pi của bạn. Khi mọi thứ đã được kết nối và mount đúng cách, bạn có thể khôi phục bản sao lưu của mình bằng lệnh rsync:</p>

<pre id="pre9">
<code>sudo rsync -avxhP /media/backup/rootfs/ /</code></pre>

<p style="text-align: justify;">Sau khi khôi phục hoàn tất, bạn nên khởi động lại Pi của mình để kiểm tra xem tất cả các file đã khôi phục đã được load đúng cách chưa. Bạn cũng nên xác minh rằng các service và cấu hình quan trọng của mình đang hoạt động như mong đợi.</p>

<p style="text-align: justify;">Nếu một số ứng dụng không hoạt động sau khi khôi phục, hãy kiểm tra file nhật ký của chúng (thường là trong /var/log/) để tìm bất kỳ lỗi nào liên quan đến quyền. Bạn có thể cần chạy:</p>

<pre id="pre10">
<code>sudo chown -R $USER:$USER /home/$USER</code></pre>

<p style="text-align: justify;">... để sửa quyền sở hữu các file thư mục root. Như bạn thấy, khôi phục bằng rsync dễ như tạo bản sao lưu – chỉ cần đảo ngược đường dẫn nguồn và đích trong các lệnh.</p>

<p style="text-align: justify;">Mặc dù dòng lệnh rsync rất đơn giản, nhưng có một số lựa chọn thay thế GUI tuyệt vời nếu bạn không thoải mái với terminal. Ví dụ, Syncthing cho phép bạn đồng bộ nhiều thư mục trên các hệ thống khác nhau, trong khi Timeshift cung cấp chức năng tạo snapshot hệ thống với giao diện gọn gàng. Bất kể bạn chọn công cụ nào, điều quan trọng là phải duy trì sao lưu thường xuyên Raspberry Pi để bảo vệ dữ liệu có giá trị và cấu hình hệ thống của bạn.</p>
		</div>
				<div id="author">
						<p>
				<strong>Nguồn tin:</strong>
				Quantrimang.com:
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-sao-luu-raspberry-pi-9553.html" title="Cách sao lưu Raspberry Pi">https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-sao-luu-raspberry-pi-9553.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; .&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.
		</div>
		<div id="contact">
			<a href="mailto:admin@nguoicodonvn2008.info">admin@nguoicodonvn2008.info</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://nguoicodonvn2008.info/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
		</script>
		<div class="car-top">
  <span><img src="https://nguoicodonvn2008.info/themes/default/images/car.png" alt=""></span>
</div>
<script src="https://nguoicodonvn2008.info/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4c_e856T",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://nguoicodonvn2008.info/assets/js/language/vi.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/global.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/site.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/news.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/main.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/custom.js"></script>
<script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "Organization",
            "url": "https://nguoicodonvn2008.info",
            "logo": "https://nguoicodonvn2008.info/uploads/angel.gif"
        }
        </script>
<script src="https://nguoicodonvn2008.info/themes/default/js/bootstrap.min.js"></script>
<script type="text/javascript">
var $scrolltop = $('.car-top');
$scrolltop.on('click', function () {
    $('html,body').animate({
        scrollTop: 0
    }, 800);
    $(this).addClass("car-run");
    setTimeout(function(){ $scrolltop.removeClass('car-run');}, 1000);
    return false;
});
$(window).on('scroll', function ()
{ 
    if($(window).scrollTop() >= 200)
    {
        $scrolltop.addClass("show");
        $scrolltop.addClass("car-down");
    }
    else
    {
       $scrolltop.removeClass("show");
       setTimeout(function(){ $scrolltop.removeClass('car-down');}, 300);
    }
});
</script>
</body>
</html>