└── README.md
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | ## **Ubuntu VPS-এ MongoDB Setup, User Management, এবং Firewall Configuration (Step-by-Step)**
4 |
5 | ---
6 |
7 | এই গাইডে আমি বিস্তারিতভাবে Ubuntu VPS-এ **MongoDB ইনস্টল, ইউজার তৈরি, ডাটাবেস তৈরি, ইউজার ও ডাটাবেস ম্যানেজমেন্ট, Firewall কনফিগারেশন, IP Access Control এবং Automatic Backup** সম্পর্কে বলব।
8 |
9 | ---
10 |
11 | ## **Step 1: MongoDB Install করা (Locally)**
12 |
13 | MongoDB ইনস্টল করার জন্য নিচের কমান্ডগুলো রান করুন:
14 |
15 | ### **1. MongoDB-এর Official GPG Key Add করুন**
16 |
17 | MongoDB-এর প্যাকেজ ভেরিফাই করার জন্য এর GPG key যুক্ত করতে হবে।
18 |
19 | ```bash
20 | curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg
21 | ```
22 |
23 | ### **2. MongoDB-এর Official Repository যোগ করুন**
24 |
25 | ```bash
26 | echo "deb [signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
27 | ```
28 |
29 | ### **3. System Update করুন**
30 |
31 | ```bash
32 | sudo apt update
33 | ```
34 |
35 | ### **যদি তুমি oracular (Ubuntu 24.04 LTS) ব্যবহার করে থাকো তাহলে এটি এখনো অফিসিয়ালভাবে MongoDB 7.0 সমর্থন করছে না, তুমি আগের Ubuntu 22.04 (jammy) কোডনেম ব্যবহার করতে পারো:**
36 |
37 | ```bash
38 | echo "deb [signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
39 | ```
40 |
41 | #### **System Update করুন**
42 |
43 | ```bash
44 | sudo apt update
45 | ```
46 |
47 | ### **4. MongoDB Install করুন**
48 |
49 | ```bash
50 | sudo apt install -y mongodb-org
51 | ```
52 |
53 | ### **5. MongoDB Service চালু করুন**
54 |
55 | ```bash
56 | sudo systemctl start mongod
57 | ```
58 |
59 | ### **6. MongoDB সার্ভিস চালু থাকবে নিশ্চিত করুন**
60 |
61 | ```bash
62 | sudo systemctl enable mongod
63 | ```
64 |
65 | ### **7. MongoDB চালু হয়েছে কিনা চেক করুন**
66 |
67 | ```bash
68 | sudo systemctl status mongod
69 | ```
70 |
71 | যদি সব ঠিক থাকে, তাহলে নিচের মতো মেসেজ দেখাবে:
72 |
73 | ```
74 | ● mongod.service - MongoDB Database Server
75 | Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
76 | Active: active (running) since...
77 | ```
78 |
79 | এই স্ট্যাটাস পেতে **q চাপলে** টার্মিনাল থেকে বেরিয়ে আসবে।
80 |
81 | ---
82 |
83 | ## **Step 2: MongoDB Shell-এ ঢোকা**
84 |
85 | MongoDB Shell চালু করতে:
86 |
87 | ```bash
88 | mongosh
89 | ```
90 |
91 | এতে MongoDB-এর ইন্টারেক্টিভ কনসোল চালু হবে।
92 |
93 | ---
94 |
95 | ## **Step 3: নতুন Database তৈরি করা**
96 |
97 | MongoDB তে নতুন ডাটাবেস তৈরি করতে:
98 |
99 | ```javascript
100 | use myDatabase
101 | ```
102 |
103 | এটি `myDatabase` নামে একটি নতুন ডাটাবেস তৈরি করবে। তবে এটি তখনই সংরক্ষিত হবে যখন আপনি এতে ডাটা যুক্ত করবেন।
104 |
105 | ডাটাবেসে একটি কালেকশন (টেবিলের মতো) তৈরি করুন:
106 |
107 | ```javascript
108 | db.myCollection.insertOne({ name: "Test Data" });
109 | ```
110 |
111 | ডাটাবেস লিস্ট দেখতে:
112 |
113 | ```javascript
114 | show dbs
115 | ```
116 |
117 | ---
118 |
119 | ## **Step 4: নতুন User তৈরি করা ও ডাটাবেসের সাথে সংযুক্ত করা**
120 |
121 | ```javascript
122 | use admin
123 | db.createUser({
124 | user: "myUser",
125 | pwd: "myPassword",
126 | roles: [{ role: "readWrite", db: "myDatabase" }]
127 | });
128 | ```
129 |
130 | **ইউজার তৈরি হওয়ার পর চেক করুন:**
131 |
132 | ```javascript
133 | show users
134 | ```
135 |
136 | ---
137 |
138 | ## **Step 5: ইউজারের পাসওয়ার্ড পরিবর্তন করা**
139 |
140 | ```javascript
141 | use admin
142 | db.updateUser("myUser", { pwd: "newSecurePassword" });
143 | ```
144 |
145 | ---
146 |
147 | ## **Step 6: User মুছে ফেলা (Delete)**
148 |
149 | ```javascript
150 | use admin
151 | db.dropUser("myUser")
152 | ```
153 |
154 | ---
155 |
156 | ## **Step 7: Database Rename করা (MongoDB-তে সরাসরি Rename অপশন নেই)**
157 |
158 | MongoDB-তে ডাটাবেস Rename করার কোনো সরাসরি কমান্ড নেই। তবে, **নতুন ডাটাবেস তৈরি করে পুরানো ডাটাবেস থেকে ডাটা কপি করে, পরে পুরানোটি ডিলিট করতে হয়।**
159 |
160 | **Database Rename করার পদ্ধতি:**
161 |
162 | ```bash
163 | mongodump --db oldDatabase --out /backup/
164 | mongorestore --db newDatabase /backup/oldDatabase/
165 | ```
166 |
167 | ---
168 |
169 | ## **Step 8: Database Delete করা**
170 |
171 | MongoDB-তে কোনো ডাটাবেস **ডিলিট করার আগে সেটিতে ঢুকতে হবে**:
172 |
173 | ```javascript
174 | use myDatabase
175 | db.dropDatabase()
176 | ```
177 |
178 | ডাটাবেস ডিলিট হয়ে গেলে `show dbs` কমান্ড দিলে আর এটি দেখা যাবে না।
179 |
180 | ---
181 |
182 | ## **Step 9: MongoDB Restart, Stop ও Reload করা**
183 |
184 | ```bash
185 | # MongoDB Restart
186 | sudo systemctl restart mongod
187 |
188 | # MongoDB Stop
189 | sudo systemctl stop mongod
190 |
191 | # MongoDB Start
192 | sudo systemctl start mongod
193 | ```
194 |
195 | ---
196 |
197 | ## **সবকিছু ঠিকভাবে কাজ করছে কিনা চেক করা**
198 |
199 | ```bash
200 | mongosh
201 | ```
202 |
203 | তারপর লগইন করে চেক করুন:
204 |
205 | ```javascript
206 | use myDatabase
207 | show collections
208 | db.myCollection.find()
209 | ```
210 |
211 | ---
212 |
213 | ## **Step 10: নির্দিষ্ট IP বা সকল IP থেকে Access দেওয়া (Firewall + Bind IP)**
214 |
215 | MongoDB ডিফল্টভাবে শুধু লোকালহোস্ট (`127.0.0.1`) থেকে কানেক্ট হতে পারে। VPS-এর বাইরের কোনো সার্ভার থেকে অ্যাক্সেস দিতে হলে **bindIP পরিবর্তন ও firewall কনফিগার করতে হবে**।
216 |
217 | ### **1. MongoDB Config পরিবর্তন করা (Bind IP সেট করা)**
218 |
219 | ফাইল ওপেন করুন:
220 |
221 | ```bash
222 | sudo nano /etc/mongod.conf
223 | ```
224 |
225 | নিচের অংশটি খুঁজুন:
226 |
227 | ```yaml
228 | # network interfaces
229 | net:
230 | bindIp: 127.0.0.1
231 | ```
232 |
233 | **নির্দিষ্ট IP থেকে Access অনুমতি দিতে (যেমন: `192.168.1.100`)**
234 |
235 | ```yaml
236 | net:
237 | bindIp: 127.0.0.1,192.168.1.100
238 | ```
239 |
240 | **সকল IP থেকে Access দিতে (⚠️ সিকিউরিটির জন্য ঝুঁকিপূর্ণ)**
241 |
242 | ```yaml
243 | net:
244 | bindIp: 0.0.0.0
245 | ```
246 |
247 | পরিবর্তন সংরক্ষণ করতে:
248 | 👉 **CTRL + X → Y → ENTER**
249 |
250 | ### **2. Firewall Rule যোগ করা**
251 |
252 | **নির্দিষ্ট IP অনুমতি দিতে (192.168.1.100)**
253 |
254 | ```bash
255 | sudo ufw allow from 192.168.1.100 to any port 27017
256 | ```
257 |
258 | **সকল IP কে Access দিতে (⚠️ নিরাপদ নয়)**
259 |
260 | ```bash
261 | sudo ufw allow 27017/tcp
262 | ```
263 |
264 | ---
265 |
266 | ## **Step 11: Firewall Enable ও Status চেক করা**
267 |
268 | ```bash
269 | sudo ufw enable
270 | sudo ufw status
271 | ```
272 |
273 | MongoDB Firewall rule চেক করতে:
274 |
275 | ```bash
276 | sudo ufw status numbered
277 | ```
278 |
279 | ---
280 |
281 | ## **সংক্ষেপে গুরুত্বপূর্ণ কমান্ডগুলো**
282 |
283 | | কাজ | কমান্ড |
284 | | ------------------- | ------------------------------------------------------------------------------- |
285 | | MongoDB Install | `sudo apt install -y mongodb-org` |
286 | | MongoDB Start | `sudo systemctl start mongod` |
287 | | MongoDB Status | `sudo systemctl status mongod` |
288 | | MongoDB Shell Open | `mongosh` |
289 | | নতুন Database তৈরি | `use myDatabase` |
290 | | নতুন User তৈরি | `db.createUser({...})` |
291 | | User Password Reset | `db.updateUser("user", {pwd: "newPass"})` |
292 | | Firewall Enable | `sudo ufw enable` |
293 | | নির্দিষ্ট IP Allow | `sudo ufw allow from 192.168.1.100 to any port 27017` |
294 | | সকল IP Allow | `sudo ufw allow 27017/tcp` |
295 | | Database Rename | `mongodump --db oldDB --out /backup/ && mongorestore --db newDB /backup/oldDB/` |
296 | | Database Delete | `use myDatabase; db.dropDatabase()` |
297 |
298 | ---
299 |
300 | এভাবে আপনি **MongoDB সেটআপ, ইউজার ম্যানেজমেন্ট, ডাটাবেস ম্যানেজমেন্ট, এবং Firewall কনফিগারেশন** করতে পারবেন! 🚀
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 | # **MongoDB automatic backup** সেটআপ করবেন কীভাবে এবং **প্রতিদিন ২ বার** ব্যাকআপ নেওয়ার ব্যবস্থা করা।
310 |
311 | ---
312 |
313 | ## **Step 1: VPS-এ লগইন করুন**
314 |
315 | প্রথমে **VPS-এর টার্মিনাল বা SSH** তে লগইন করুন:
316 |
317 | ```bash
318 | ssh your_user@your_vps_ip
319 | ```
320 |
321 | এখানে:
322 |
323 | - `your_user` = আপনার VPS-এর ইউজারনেম
324 | - `your_vps_ip` = আপনার VPS-এর IP Address
325 |
326 | ---
327 |
328 | ## **Step 2: ব্যাকআপ সংরক্ষণের জন্য ফোল্ডার তৈরি করুন**
329 |
330 | MongoDB-এর ব্যাকআপগুলো সংরক্ষণ করার জন্য একটি ফোল্ডার তৈরি করুন:
331 |
332 | ```bash
333 | mkdir -p ~/mongodb_backups
334 | ```
335 |
336 | এটি আপনার **হোম ডিরেক্টরিতে** `mongodb_backups` নামে একটি ফোল্ডার তৈরি করবে।
337 |
338 | ---
339 |
340 | ## **Step 3: ব্যাকআপ স্ক্রিপ্ট তৈরি করুন**
341 |
342 | এখন `backup.sh` নামে একটি স্ক্রিপ্ট তৈরি করতে হবে। এই ফাইলটি ব্যাকআপ নেওয়ার কাজ করবে।
343 |
344 | 1. **nano editor** দিয়ে স্ক্রিপ্ট তৈরি করুন:
345 |
346 | ```bash
347 | nano ~/backup.sh
348 | ```
349 |
350 | 2. ফাইলের মধ্যে নিচের কোড **copy-paste** করুন:
351 |
352 | ```bash
353 | #!/bin/bash
354 |
355 | # ব্যাকআপের জন্য তারিখ ও সময় যুক্ত করা
356 | TIMESTAMP=$(date +"%F-%H-%M-%S")
357 |
358 | # MongoDB সেটআপ তথ্য
359 | DB_NAME="your_database_name" # আপনার ডাটাবেসের নাম দিন
360 | BACKUP_DIR="/home/your_user/mongodb_backups" # ব্যাকআপ সংরক্ষণের লোকেশন
361 | MONGO_HOST="localhost"
362 | MONGO_PORT="27017"
363 |
364 | # ব্যাকআপ ডিরেক্টরি যদি না থাকে, তাহলে তৈরি করো
365 | mkdir -p "$BACKUP_DIR"
366 |
367 | # MongoDB ডাটাবেস ব্যাকআপ নেওয়া
368 | mongodump --host $MONGO_HOST --port $MONGO_PORT --db $DB_NAME --out "$BACKUP_DIR/$DB_NAME-$TIMESTAMP"
369 |
370 | # পুরনো ৭ দিনের ব্যাকআপ ডিলিট করা
371 | find "$BACKUP_DIR" -type d -mtime +7 -exec rm -rf {} \;
372 |
373 | echo "MongoDB backup completed at $TIMESTAMP"
374 | ```
375 |
376 | ⚠️ **যা পরিবর্তন করবেন:**
377 |
378 | - `your_database_name` = আপনার **MongoDB database name**
379 | - `your_user` = আপনার VPS-এর **username**
380 |
381 | 3. **ফাইলটি সংরক্ষণ করুন:**
382 | - **Ctrl + X** চাপুন
383 | - তারপর **Y** চাপুন এবং **Enter** দিন
384 | 4. **যদি সম্পূর্ণ Database সংরক্ষণ করতে চান:**
385 |
386 | ```bash
387 | #!/bin/bash
388 | echo "Backup script started at $(date)" >> /root/erro_file_store/mongodb_backup.log
389 | # ব্যাকআপের জন্য তারিখ ও সময় যুক্ত করা
390 | TIMESTAMP=$(date +"%F-%H-%M-%S")
391 |
392 | # MongoDB সেটআপ তথ্য
393 | BACKUP_DIR="/home/root/mongodb_backups" # ব্যাকআপ সংরক্ষণের লোকেশন
394 | MONGO_HOST="localhost"
395 | MONGO_PORT="27017"
396 |
397 | # ব্যাকআপ ডিরেক্টরি যদি না থাকে, তাহলে তৈরি করো
398 | mkdir -p "$BACKUP_DIR"
399 |
400 | # MongoDB সকল ডাটাবেসের ব্যাকআপ নেওয়া
401 | mongodump --host $MONGO_HOST --port $MONGO_PORT --out "$BACKUP_DIR/mongodb-backup-$>
402 |
403 | # Google Drive এ ব্যাকআপ আপলোড করা (rclone ব্যবহার)
404 | rclone copy "$BACKUP_DIR/mongodb-backup-$TIMESTAMP" gdrive:/mongodb_backups/ --log->
405 |
406 | # পুরনো ৭ দিনের ব্যাকআপ ডিলিট করা
407 | find "$BACKUP_DIR" -type d -mtime +7 -exec rm -rf {} \;
408 |
409 | echo "MongoDB backup completed at $TIMESTAMP and uploaded to Google Drive"
410 |
411 | ```
412 |
413 |
414 | ---
415 |
416 | ## **Step 4: স্ক্রিপ্টটি এক্সিকিউটেবল করুন**
417 | এই স্ক্রিপ্টটি রান করার জন্য **এক্সিকিউটেবল (Executable)** করতে হবে:
418 | ```bash
419 | chmod +x ~/backup.sh
420 | ````
421 |
422 | ---
423 |
424 | ## **Step 5: Cron Job সেটআপ করুন (প্রতিদিন ২ বার ব্যাকআপ নেওয়া)**
425 |
426 | এখন, আমরা **ক্রনজব (cron job)** সেট করব যাতে **প্রতিদিন ২ বার (সকাল ৮টা এবং রাত ৮টা)** ব্যাকআপ নেয়।
427 |
428 | 1. ক্রনজব এডিটর খুলুন:
429 |
430 | ```bash
431 | crontab -e
432 | ```
433 |
434 | 2. নিচের লাইনটি যোগ করুন:
435 |
436 | ```bash
437 | 0 8 * * * /home/your_user/backup.sh >> /home/your_user/backup.log 2>&1
438 | 0 20 * * * /home/your_user/backup.sh >> /home/your_user/backup.log 2>&1
439 | ```
440 |
441 | **ব্যাখ্যা:**
442 |
443 | - `0 8 * * *` → **প্রতিদিন সকাল ৮টায় ব্যাকআপ নিবে**
444 | - `0 20 * * *` → **প্রতিদিন রাত ৮টায় ব্যাকআপ নিবে**
445 | - `backup.log` → ব্যাকআপের **লগ (log) ফাইল** তৈরি হবে, যেখানে ব্যাকআপ নেওয়ার রেকর্ড থাকবে।
446 |
447 | 3. **Ctrl + X** চাপুন, তারপর **Y** চাপুন এবং **Enter** দিন।
448 |
449 | ---
450 |
451 | ## **Step 6: ম্যানুয়ালি ব্যাকআপ পরীক্ষা করুন**
452 |
453 | ক্রনজব কাজ করছে কিনা তা নিশ্চিত করতে **ম্যানুয়ালি** স্ক্রিপ্ট চালান:
454 |
455 | ```bash
456 | ~/backup.sh
457 | ```
458 |
459 | তারপর, চেক করুন ব্যাকআপ ফোল্ডারে ফাইল তৈরি হয়েছে কিনা:
460 |
461 | ```bash
462 | ls -lah ~/mongodb_backups
463 | ```
464 |
465 | যদি সব ঠিক থাকে, তাহলে দেখবেন একটি নতুন ব্যাকআপ ফোল্ডার তৈরি হয়েছে।
466 |
467 | ---
468 |
469 | ## **Step 7: ব্যাকআপ ফাইল ডাউনলোড / রিস্টোর করার পদ্ধতি**
470 |
471 | ### **✅ ব্যাকআপ ফাইল ডাউনলোড করা (VPS থেকে নিজের কম্পিউটারে)**
472 |
473 | আপনি **scp** কমান্ড দিয়ে ব্যাকআপ ফাইল ডাউনলোড করতে পারেন:
474 |
475 | ```bash
476 | scp -r your_user@your_vps_ip:/home/your_user/mongodb_backups ./
477 | ```
478 |
479 | এটি **আপনার লোকাল পিসিতে** `mongodb_backups` ফোল্ডারটি ডাউনলোড করবে।
480 |
481 | ---
482 |
483 | ### **✅ MongoDB ব্যাকআপ রিস্টোর করা (Restore Database from Backup)**
484 |
485 | ব্যাকআপ থেকে **ডাটাবেস রিস্টোর** করতে চাইলে এই কমান্ড ব্যবহার করুন:
486 |
487 | ```bash
488 | mongorestore --db your_database_name /home/your_user/mongodb_backups/backup_folder_name/
489 | ```
490 |
491 | এখানে `backup_folder_name` পরিবর্তন করে আপনার নির্দিষ্ট ব্যাকআপ ফোল্ডারের নাম দিন।
492 |
493 | ---
494 |
495 | ## **NOTE**
496 |
497 | এখন আপনার **MongoDB automatic backup system** **সফলভাবে সেটআপ** করা হয়ে গেছে! প্রতিদিন **সকাল ৮টা ও রাত ৮টা**-তে VPS **অটোমেটিক MongoDB ব্যাকআপ** নিয়ে সংরক্ষণ করবে এবং পুরনো **৭ দিনের ব্যাকআপ মুছে ফেলবে।** ⤵
498 |
499 |
500 |
501 |
502 |
503 |
504 |
505 | # **Google Drive-এ MongoDB Backup অটোমেটিক আপলোড**
506 |
507 | আপনার VPS-এ MongoDB ব্যাকআপ গুগল ড্রাইভে **অটোমেটিক** আপলোড করতে **rclone** ব্যবহার করা হবে।
508 |
509 | ---
510 |
511 | ### **Step 1: VPS-এ rclone ইন্সটল করুন**
512 |
513 | VPS-এর টার্মিনালে নিচের কমান্ড দিন:
514 |
515 | ```bash
516 | curl https://rclone.org/install.sh | sudo bash
517 | ```
518 |
519 | এটি **rclone** ইন্সটল করবে।
520 |
521 | ---
522 |
523 | ### **Step 2: rclone কনফিগার করুন (Google Drive একাউন্ট যুক্ত করুন)**
524 |
525 | ```bash
526 | rclone config
527 | ```
528 |
529 | এরপর ধাপে ধাপে অনুসরণ করুন:
530 |
531 | 1. নতুন কনফিগার তৈরি করুন:
532 |
533 | - `n` চাপুন (New remote)
534 | - নাম দিন: `gdrive`
535 |
536 | 2. Google Drive নির্বাচন করুন:
537 |
538 | - `Storage type` চাবে, সেখানে `drive` টাইপ করুন
539 |
540 | 3. **Client ID & Secret এন্টার করা লাগবে না**, শুধু **Enter** চাপুন
541 |
542 | 4. **Authentication Method**:
543 |
544 | - **Full access দিতে** `1` চাপুন
545 |
546 | 5. **Google Drive Authorization:**
547 | - VPS-এর **ব্রাউজার না থাকলে**, আপনাকে একটা **লিংক দেবে**
548 | - **লিংক ওপেন করে** আপনার **Google Account** দিয়ে লগইন করুন
549 | - **Authentication কোড কপি করে** VPS-এর টার্মিনালে পেস্ট করুন
550 |
551 | ---
552 |
553 | Link টা এমন হবে
554 |
555 | ```
556 | http://127.0.0.1:53682/?state=VQ99iErCu78A8OCLfTHXjg&code=4/0AQSTgQEhhRZ8gaPYFtM3teE_71FhKXF0iPn6DEUyiUn5h_sHtfLtUiVQyY1Iy0MwhyWxXw&scope=https://www.googleapis.com/auth/drive
557 | ```
558 |
559 | ---
560 |
561 | 6. সেটিংস সেভ করুন:
562 | - `y` চাপুন (Yes)
563 |
564 | ---
565 |
566 | ### **Step 3: ব্যাকআপ স্ক্রিপ্টে Google Drive আপলোড যুক্ত করুন**
567 |
568 | `backup.sh` ফাইল খুলুন:
569 |
570 | ```bash
571 | nano ~/backup.sh
572 | ```
573 |
574 | নিচের লাইনটি স্ক্রিপ্টের **শেষে** যুক্ত করুন:
575 |
576 | ```bash
577 | rclone copy "$BACKUP_DIR" gdrive:MongoDB_Backups
578 | ```
579 |
580 | এটি আপনার ব্যাকআপ ফাইল **Google Drive-এর "MongoDB_Backups" ফোল্ডারে** আপলোড করবে।
581 |
582 | ---
583 |
584 | ### **Step 4: ম্যানুয়ালি আপলোড পরীক্ষা করুন**
585 |
586 | ```bash
587 | ./backup.sh
588 | ```
589 |
590 | তারপর Google Drive-এ **MongoDB_Backups** ফোল্ডারে গিয়ে দেখুন ফাইল এসেছে কিনা।
591 |
592 | ---
593 |
594 | ### **Step 5: Cron Job আপডেট করুন (Auto Upload)**
595 |
596 | ```bash
597 | crontab -e
598 | ```
599 |
600 | নিচের লাইনটি যোগ করুন:
601 |
602 | ```bash
603 | 0 8 * * * /home/your_user/backup.sh >> /home/your_user/backup.log 2>&1
604 | 0 20 * * * /home/your_user/backup.sh >> /home/your_user/backup.log 2>&1
605 | ```
606 |
607 | এতে **প্রতিদিন ২ বার** ব্যাকআপ নিয়ে **Google Drive-এ আপলোড** হবে।
608 |
609 | ---
610 |
611 |
612 |
613 |
614 |
615 |
616 | # **AWS S3-তে MongoDB Backup আপলোড করা**
617 |
618 | AWS S3-তে MongoDB ব্যাকআপ আপলোড করার জন্য **AWS CLI** ব্যবহার করবো।
619 |
620 | ---
621 |
622 | ### **Step 1: AWS CLI ইন্সটল করুন**
623 |
624 | VPS-এর টার্মিনালে রান করুন:
625 |
626 | ```bash
627 | sudo apt update && sudo apt install awscli -y
628 | ```
629 |
630 | ---
631 |
632 | ### **Step 2: AWS Credentials সেটআপ করুন**
633 |
634 | ```bash
635 | aws configure
636 | ```
637 |
638 | এখন **AWS Access Key & Secret Key দিন** (আপনার AWS IAM Console থেকে নিতে হবে)।
639 |
640 | - Access Key: `your_aws_access_key`
641 | - Secret Key: `your_aws_secret_key`
642 | - Region: `ap-southeast-1` (বাংলাদেশের জন্য Singapore)
643 | - Output Format: `json`
644 |
645 | ---
646 |
647 | ### **Step 3: S3-তে ব্যাকআপ আপলোড যুক্ত করুন**
648 |
649 | `backup.sh` স্ক্রিপ্ট আপডেট করুন:
650 |
651 | ```bash
652 | nano ~/backup.sh
653 | ```
654 |
655 | নিচের লাইনটি স্ক্রিপ্টের **শেষে** যুক্ত করুন:
656 |
657 | ```bash
658 | aws s3 cp --recursive "$BACKUP_DIR" s3://your-bucket-name/mongodb_backups/
659 | ```
660 |
661 | ⚠️ **your-bucket-name** পরিবর্তন করে **আপনার S3 bucket name দিন**।
662 |
663 | ---
664 |
665 | ### **Step 4: ম্যানুয়ালি আপলোড পরীক্ষা করুন**
666 |
667 | ```bash
668 | ./backup.sh
669 | ```
670 |
671 | তারপর **AWS S3 console**-এ গিয়ে চেক করুন, ব্যাকআপ ফাইল আপলোড হয়েছে কিনা।
672 |
673 | ---
674 |
675 | ### **Step 5: Cron Job আপডেট করুন (Auto Upload to S3)**
676 |
677 | ```bash
678 | crontab -e
679 | ```
680 |
681 | নিচের লাইনটি যোগ করুন:
682 |
683 | ```bash
684 | 0 8 * * * /home/your_user/backup.sh >> /home/your_user/backup.log 2>&1
685 | 0 20 * * * /home/your_user/backup.sh >> /home/your_user/backup.log 2>&1
686 | ```
687 |
688 | এতে **প্রতিদিন ২ বার** ব্যাকআপ নিয়ে **AWS S3-তে আপলোড** হবে।
689 |
690 | ---
691 |
692 | ## **Final Result:**
693 |
694 | ✅ MongoDB-এর ব্যাকআপ **VPS-এ সংরক্ষণ** হবে
695 | ✅ **Google Drive / AWS S3**-তে **Auto Upload** হবে
696 | ✅ পুরনো **৭ দিনের ব্যাকআপ অটোমেটিক ডিলিট** হবে
697 |
698 | ---
699 |
--------------------------------------------------------------------------------