ব্যাকআপ / ক্লোন করতে অন্য স্কুলে উবুন্টুকে স্ক্রিপ্ট দিন Bash


12

উবুন্টু 18.04 এপ্রিল 26, 2018 প্রকাশিত হয়েছে এবং আমি আমার প্রোগ্রামগুলি আপগ্রেড করতে এবং আমার ডেটা রূপান্তর করতে চেষ্টা করতে চাই তবে বাগ থাকলে তা প্রতিশ্রুতি দিতে চাই না।

আমি উইন্ডোজকে 410 গিগাবাইট থেকে 385 জিবি থেকে সঙ্কুচিত করেছি, উবুন্টু 16.04 রিবুট করেছি এবং gparted"উবুন্টু 18.04" লেবেলযুক্ত একটি নতুন 25 জিবি পার্টিশন তৈরি করতে দৌড়ে এসেছি। আমি দৌড়ে গিয়ে rm-kernelsউবুন্টু 16.04 এ প্রায় 10 গিগাবাইট দূর করতে প্রায় 20 টি কার্নেল সরিয়েছি।

এখন আমি একটি স্ক্রিপ্ট চাই যা ১ that.০৪ এলটিএস সহ নতুন পার্টিশনটি জনপ্রিয় করবে এবং এতে একটি নতুন গ্রাব মেনু বিকল্প তৈরি করবে। শুধুমাত্র প্রাসঙ্গিক ডিরেক্টরিগুলি অনুলিপি করা উচিত। উদাহরণ হিসেবে বলা যায় /sys, /run, /procএবং /devবুট করার সময় নির্মিত ভার্চুয়াল ডিরেক্টরি এবং কপি করা উচিত নয়।

আমি /etc/fstabসঠিক ইউআইডির সাথে প্যাচ করতে চাই এবং cronপুনরায় বুট করা চাকরিগুলি অক্ষম করে যাতে ক্লোন বুট করার পরে ক্লোনযুক্ত ডেটাতে প্রতিদিনের ব্যাকআপগুলি চালিত হয় না।

আমি আগামী কয়েক সপ্তাহ / মাস ধরে বহুবার স্ক্রিপ্টটি চালানোর প্রত্যাশা করছি। যেমন ক্লোনিং প্রক্রিয়া অনায়াসে পুনরাবৃত্তিযোগ্য হওয়া উচিত।

সুরক্ষা আপডেটগুলি এবং নতুন উবুন্টু কার্নেল টিম আপডেটগুলি উত্পাদন সিস্টেমকে প্রভাবিত না করে পরীক্ষা করার জন্য একই স্ক্রিপ্টটি ব্যবহার করা যেতে পারে।


20 কার্নেল লাগবে 10 জিবি !!!? আপনি কি ঘটনাক্রমে কার্নেল ফোলা সংস্করণ ইনস্টল করেছেন?
মিথ্যা রায়ান

@ লাইরিয়ান এটি আসলে কার্নেল প্রতি 400MB এবং 500 এমবি নয় আমি সংখ্যাগুলি প্রায় গোল করেছি (প্রায় 20 কার্নেল)। দেখার জন্য কত প্রতিটি কার্নেলের আপ (ওঠানামা 394MB থেকে 419MB থেকে আমার বর্তমান উপর, ইনস্টল দেখতে :. লাগে askubuntu.com/questions/949411/...
WinEunuuchs2Unix

উত্তর:


19

ক্লোন পার্টিশনের সক্রিয় উবুন্টু পার্টিশন ক্লোন করতে স্ক্রিপ্ট বাশ করুন

clone-ubuntu.shব্যাশ স্ক্রিপ্ট অঙ্গীভূতভাবে এবং নিরাপদে 18.04 LTS এ আপগ্রেড করার জন্য একটি পার্টিশন মধ্যে 16,04 LTS প্রতিলিপি হবে:

ক্লোন-ubuntu.png

গুরুত্বপূর্ণ বিষয়গুলি বিবেচনা করুন:

  • আপনাকে অবশ্যই উবুন্টু 16.04 ক্লোনext4 ধারণ করার জন্য একটি বৃহত খালি পার্টিশন তৈরি করতে হবে
  • স্ক্রিপ্টটি কল করার clone-ubuntu.shসময় পার্টিশনটি মাউন্ট করা যায় না । স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে পার্টিশনটিকে মাউন্ট এবং আনমাউন্ট করে।
  • কমান্ডটি ক্লোন পার্টিশনে rsyncফাইলগুলি অনুলিপি করতে ব্যবহৃত হয় /। প্রথমবার আপনি clone-ubuntu.shএটি চালানোর জন্য কয়েক মিনিট সময় লাগবে। দ্বিতীয়বার আপনি স্ক্রিপ্টটি চালান কেবল ফাইলের পরিবর্তন আপডেট হয় এবং এটি এক মিনিটেরও কম সময় নেয়।
  • আপনি এই স্ক্রিপ্টটি চালাতে পারেন এবং একাধিকবার রিবুট করতে পারেন। কোন নতুন তথ্য ক্লোন লক্ষ্যে হবে মোছা বর্তমান মিরর করতে /ফাইল & ডিরেক্টরি।
  • সমস্ত ক্রোন /etc/cron.d(রিবুট) কাজগুলি একটি নতুন সাব ডিরেক্টরিতে ডাকা হয় /etc/cron.d/hold। ক্লোন বুট করার পরে sudo crontab -eনির্বাচিত ক্রোন জবগুলি চালানো থেকে রোধ করতে চালানো মনে রাখবেন ।
  • ক্লোনড ফাইলটি চালু /etc/fstabথাকা পার্টিশনের জন্য উপযুক্ত ইউআইডি দিয়ে সংশোধন করা হয়েছে।
  • ক্লোন করা ফাইলটি /boot/grub/grub.cfgসফল ক্লোন বুট করার জন্য উপযুক্ত ইউআইডি দিয়ে সংশোধন করা হয়েছে। ক্লোন করা ফাইলগুলি এতে quiet splashপরিবর্তিত হয়েছে nosplashযাতে আপনি স্ক্রোলিং টার্মিনাল বার্তাটি পান। এটি "রিয়েল" সংস্করণের পরিবর্তে ক্লোন বুট করার জন্য ভিজ্যুয়াল সচেতনতা দেয়।
  • update-grub ক্লোন করা পার্টিশনের দিকে নির্দেশ করে নতুন মেনু অপশন সহ গ্রুব আপডেট করতে চালিত হয়।
  • ক্লোন করা ফাইলটি এতে /etc/update-manager/release-upgradesপরিবর্তিত Prompt=neverহয়েছে Prompt=lts। আপনি যখন ক্লোনটি বুট করেন এবং এটি সম্পাদন করেন তখন do-release-upgrade -dউবুন্টু 16.04 কে 18.04 এ আপগ্রেড করা যায়।
  • ক্লোনিংয়ের আগে একটি নিশ্চিতকরণের পর্দা প্রদর্শিত হয় (পরবর্তী বিভাগে দেখানো হয়েছে) এবং আপনাকে এগিয়ে যেতে y / Y টাইপ করতে হবে।

নিশ্চিতকরণের পর্দা

একটি লক্ষ্য ক্লোন পার্টিশন নির্বাচন করার পরে এটি প্রথমে ext4পার্টিশন টাইপ হতে যাচাই করা হয় এবং এটি ইতিমধ্যে মাউন্ট করা হয় না। যদি এই পরীক্ষাটি পাস হয়ে যায় তবে একটি নিশ্চিতকরণ বার্তা উপস্থিত হয়:

=====================================================================
Mounting clone partition /dev/nvme0n1p8 as /mnt/clone16.04

=====================================================================
PLEASE: Carefully confirm Source (Live) and Target (Clone) partitions

SOURCE (BOOT /):  /dev/nvme0n1p5      TARGET (CLONE):  /dev/nvme0n1p8
ID:               Ubuntu              ID:              Ubuntu
RELEASE:          16.04               RELEASE:         16.04
CODENAME:         xenial              CODENAME:        xenial
DESCRIPTION:      Ubuntu 16.04.3 LTS  DESCRIPTION:     Ubuntu 16.04.3 LTS
 Size  Used Avail Use%                 Size  Used Avail Use%
  44G   17G   26G  40%                  24G   17G  5.8G  74%

NOTE: If you are recloning, new files in clone will be deleted,
      modified files are reset to current source content and,
      files deleted from clone are added back from source.

Type Y (or y) to proceed. Any other key to exit: 

এই উদাহরণে পূর্ববর্তী ক্লোনটি পুনরায় গণনার জন্য বেছে নেওয়া হয়েছে। ক্লোনটিতে উপলব্ধ স্থানটি একটি নিঃশব্দ বিন্দু কারণ আমরা ইতিমধ্যে জানি যে পর্যাপ্ত জায়গা উপলব্ধ available

আপনার যদি একাধিক উবুন্টু ইনস্টলেশন রয়েছে, দয়া করে আপনি বর্তমানে বুট করা উবুন্টুকে ক্লোন করতে সঠিক পার্টিশনটি নির্বাচন করেছেন কিনা তা যাচাই করুন /(রুট) হিসাবে , তে।

yবা ব্যতীত অন্য কোনও কী টিপে চাপ বিসর্জন করার এটি আপনার শেষ সুযোগ Y


আউটপুট তালিকা

আপনি যখন স্ক্রিপ্টটি চালাবেন আপনি এই আউটপুটটি পাবেন (উপরে তালিকাভুক্ত আউটপুট বাদ দিয়ে):

=====================================================================
Using rsync to clone / to /dev/nvme0n1p8 mounted as /mnt/clone16.04
          6.11G  38%   86.46MB/s    0:01:07 (xfr#139123, to-chk=0/647700)   

Number of files: 647,700 (reg: 470,100, dir: 104,694, link: 72,903, special: 3)
Number of created files: 127,824 (reg: 72,472, dir: 15,825, link: 39,526, special: 1)
Number of deleted files: 73,318 (reg: 59,766, dir: 9,701, link: 3,847, special: 4)
Number of regular files transferred: 139,123
Total file size: 15.92G bytes
Total transferred file size: 6.11G bytes
Literal data: 6.11G bytes
Matched data: 0 bytes
File list size: 8.50M
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 6.14G
Total bytes received: 7.82M

sent 6.14G bytes  received 7.82M bytes  89.74M bytes/sec
total size is 15.92G  speedup is 2.59

Time to clone files: 68 Seconds

=====================================================================
Making changes in: /mnt/clone16.04/etc/update-manager/release-upgrades
     from Prompt=: never
       to Prompt=: lts
Allows running 'do-release-upgrade -d' when rebooting clone target
Consider 'do-release-upgrade -d -f DistUpgradeViewNonInteractive' This
allows you to go to bed or go to lunch whilst upgrade runs.

* * *  When you Upgrade, TURN OFF screen locking for inactivity. * * *

=====================================================================
Making changes in: /mnt/clone16.04/etc/fstab
        from UUID: f3f8e7bc-b337-4194-88b8-3a513f6be55b
          to UUID: 113f9955-a064-4ce2-9cae-74f2a9518550

=====================================================================
Making changes in: /mnt/clone16.04/boot/grub/grub.cfg
        from UUID: f3f8e7bc-b337-4194-88b8-3a513f6be55b
          to UUID: 113f9955-a064-4ce2-9cae-74f2a9518550
Also change 'quiet splash' to 'nosplash' for environmental awareness
Suggest first time booting clone you make wallpaper unique

=====================================================================
Calling 'update-grub' to create new boot menu
Generating grub configuration file ...
Found background: /home/rick/Pictures/1600x900/21.jpg
Found background image: /home/rick/Pictures/1600x900/21.jpg
Found linux image: /boot/vmlinuz-4.14.34-041434-generic
Found initrd image: /boot/initrd.img-4.14.34-041434-generic
Found linux image: /boot/vmlinuz-4.14.31-041431-generic
Found initrd image: /boot/initrd.img-4.14.31-041431-generic
Found linux image: /boot/vmlinuz-4.14.30-041430-generic
Found initrd image: /boot/initrd.img-4.14.30-041430-generic
Found linux image: /boot/vmlinuz-4.14.27-041427-generic
Found initrd image: /boot/initrd.img-4.14.27-041427-generic
Found linux image: /boot/vmlinuz-4.14.15-041415-generic
Found initrd image: /boot/initrd.img-4.14.15-041415-generic
Found linux image: /boot/vmlinuz-4.14.10-041410-generic
Found initrd image: /boot/initrd.img-4.14.10-041410-generic
Found linux image: /boot/vmlinuz-4.14.4-041404-generic
Found initrd image: /boot/initrd.img-4.14.4-041404-generic
Found linux image: /boot/vmlinuz-4.14.2-041402-generic
Found initrd image: /boot/initrd.img-4.14.2-041402-generic
Found linux image: /boot/vmlinuz-4.13.9-041309-generic
Found initrd image: /boot/initrd.img-4.13.9-041309-generic
Found linux image: /boot/vmlinuz-4.10.0-42-generic
Found initrd image: /boot/initrd.img-4.10.0-42-generic
Found linux image: /boot/vmlinuz-4.9.77-040977-generic
Found initrd image: /boot/initrd.img-4.9.77-040977-generic
Found linux image: /boot/vmlinuz-4.4.0-104-generic
Found initrd image: /boot/initrd.img-4.4.0-104-generic
Found linux image: /boot/vmlinuz-3.16.53-031653-generic
Found initrd image: /boot/initrd.img-3.16.53-031653-generic
Found Windows Boot Manager on /dev/nvme0n1p2@/EFI/Microsoft/Boot/bootmgfw.efi
Found Ubuntu 16.04.3 LTS (16.04) on /dev/nvme0n1p8
Found Windows Boot Manager on /dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
done

=====================================================================
Unmounting /dev/nvme0n1p8 as /mnt/clone16.04

rsync নতুন ক্লোনটির স্থিতি প্রদর্শন display

প্রথমবার ক্লোনিং করার সময়, rsyncতৈরি হওয়া সমস্ত ফাইলের 0 থেকে 100% পর্যন্ত আপডেট দেবে। ক্লোনটি খালি থাকায় কোনও ফাইল মোছা বা পরিবর্তন করা হবে না:

clone-ubuntu.sh খালি ক্লোন.gif

rsync পুনরায় সংস্থান করার সময় স্থিতি প্রদর্শন

rsyncপুনরুদ্ধার করা হলে এটি কখনই হিট 100%হয় না কারণ যে ফাইলগুলি কখনই পরিবর্তন হয় না সেগুলি অনুলিপি করা হয় না। rsyncপরবর্তী ফাইলের অনুলিপি করার স্ক্যান হিসাবে আপডেটের অগ্রগতিতে বিলম্ব হবে এবং যখন এটি ক্লোনটিতে তৈরি নতুন ফাইলগুলি মুছবে যা কখনই আসলটিতে উপস্থিত ছিল না:

ক্লোন-উবুন্টু-rsync.gif


বাশ লিপি - clone-ubuntu.sh

#!/bin/bash

# NAME: clone-ubuntu.sh
# PATH: /usr/local/bin
# DESC: Written for AU Q&A: /ubuntu/1028604/bash-seemless-safe-script-to-upgrade-16-04-to-18-04/1028605#1028605
# DATE: Apr 27, 2018. Modified May 6, 2018.

# UPDT: May 02 2018 - Display selected parition and get confirmation.
#       May 06 2018 - Revise `do-release-upgrade -d` instructions.
#                     Correct listing of files in empty target partition.
#       Aug 09 2018 - Add --inplace parameter to `rsync`
#                     Comment out disabling `/etc/cron.d` on clone target.
#                     Users may uncomment and/or revise to their needs.

# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
    notify-send --urgency=critical \ 
                "$0 cannot be run from GUI without TERM environment variable."
    exit 1
fi

# Must run as root
if [[ $(id -u) -ne 0 ]] ; then echo "Usage: sudo $0" ; exit 1 ; fi

#
# Create unqique temporary file names
#

tmpPart=$(mktemp /tmp/clone-ubuntu.XXXXX)   # Partitions list
tmpMenu=$(mktemp /tmp/clone-ubuntu.XXXXX)   # Menu list
tmpInf1=$(mktemp /tmp/clone-ubuntu.XXXXX)   # Soucre (Booted) Ubuntu Info
tmpInf2=$(mktemp /tmp/clone-ubuntu.XXXXX)   # Target (Cloned) Ubuntu Info
tmpInf3=$(mktemp /tmp/clone-ubuntu.XXXXX)   # Work file used by DistInfo ()

#
# Function Cleanup () Removes temporary files
#

CleanUp () {
    [[ -f "$tmpPart" ]] && rm -f "$tmpPart" # If we created temp files
    [[ -f "$tmpMenu" ]] && rm -f "$tmpMenu" #  at various program stages
    [[ -f "$tmpInf1" ]] && rm -f "$tmpInf1" #  then remove them before
    [[ -f "$tmpInf2" ]] && rm -f "$tmpInf2" #  exiting.
    [[ -f "$tmpInf3" ]] && rm -f "$tmpInf3"

    if  [[  -d "$TargetMnt" ]]; then        # Did we create a clone mount?
        umount "$TargetMnt" -l              # Unmount the clone
        rm  -d "$TargetMnt"                 # Remove clone directory
    fi
}

#
# Function GetUUID () gets UUIDs of source and clone target partitions in menu.
#

GetUUID () {

    SrchLine="$1"                           # menu line passed to function
    UUID_col=0                              # start column of UUID in line
    lsblk -o NAME,UUID > "$tmpPart"         # Get list of UUID's

    while read -r UUID_Line; do             # Read through UUID list

        # Establish UUID position on line
        if [[ $UUID_col == 0 ]] ; then      # First time will be heading
            UUID_col="${UUID_Line%%UUID*}"  # Establish column number
            UUID_col="${#UUID_col}"         #  where UUID appears on line
            NameLen=$(( UUID_col - 1 ))     # Max length of partition name
            continue                        # Skip to read next line
        fi

        # Check if Passed line name (/dev/sda1, /nvme01np8, etc.) matches.
        if [[ "${UUID_Line:0:$NameLen}" == "${SrchLine:0:$NameLen}" ]] ; then
            FoundUUID="${UUID_Line:UUID_col:999}"
            break                           # exit function
        fi

    done < "$tmpPart"                       # Read next line & loop back
}


#
# Function DistInfo () builds information about source & target partitions
#

DistInfo () {

    Mount="$1"                              # Mount name is '/' or $TargetMnt
    FileName="$2"                           # "$tmpInf1" or "$tmpInf2" work file
    cat "$Mount"/etc/lsb-release >> "$FileName"
    sed -i 's/DISTRIB_//g' "$FileName"      # Remove DISTRIB_ prefix.
    sed -i 's/=/:=/g' "$FileName"           # Change "=" to ":="
    sed -i 's/"//g' "$FileName"             # Remove " around "Ubuntu 16.04...".

    # Align columns from "Xxxx:=Yyyy" to "Xxxx:      Yyyy"
    cat "$FileName" | column -t -s '=' > "$tmpInf3"
    cat "$tmpInf3" > "$FileName"
}


#
# Mainline
#

lsblk -o NAME,FSTYPE,LABEL,SIZE,MOUNTPOINT > "$tmpMenu"

i=0
SPACES='                                                                     '
DoHeading=true
AllPartsArr=()      # All partitions.

# Build whiptail menu tags ($i) and text ($Line) into array

while read -r Line; do
    if [[ $DoHeading == true ]] ; then
        DoHeading=false                     # First line is the heading.
        MenuText="$Line"                    # Heading for whiptail.
        FSTYPE_col="${Line%%FSTYPE*}"           
        FSTYPE_col="${#FSTYPE_col}"         # Required to ensure `ext4`.
        MOUNTPOINT_col="${Line%%MOUNTPOINT*}"
        MOUNTPOINT_col="${#MOUNTPOINT_col}" # Required to ensure not mounted.
        continue
    fi

    Line="$Line$SPACES"                     # Pad extra white space.
    Line=${Line:0:74}                       # Truncate to 74 chars for menu.

    if [[ "${Line:MOUNTPOINT_col:4}" == "/   " ]] ; then
        GetUUID "$Line"
        SourceUUID=$FoundUUID
        # Build "/dev/Xxxxx" FS name from "├─Xxxxx" lsblk line
        SourceDev="${Line%% *}"
        SourceDev=/dev/"${SourceDev:2:999}"
    fi

    AllPartsArr+=($i "$Line")               # Menu array entry = Tag# + Text.
    (( i++ ))

done < "$tmpMenu"                           # Read next "lsblk" line.

#
# Display whiptail menu in while loop until no errors, or escape,
# or valid partion selection .
#

DefaultItem=0

while true ; do

    # Call whiptail in loop to paint menu and get user selection
    Choice=$(whiptail \
        --title "Use arrow, page, home & end keys. Tab toggle option" \
        --backtitle "Clone 16.04 for upgrade.  ONLY CLONES / PARTITION" \
        --ok-button "Select unmounted partition" \
        --cancel-button "Exit" \
        --notags \
        --default-item "$DefaultItem" \
        --menu "$MenuText" 24 80 16 \
        "${AllPartsArr[@]}" \
        2>&1 >/dev/tty)

    clear                                   # Clear screen.
    if [[ $Choice == "" ]]; then            # Escape or dialog "Exit".
        CleanUp
        exit 0;
     fi

    DefaultItem=$Choice                     # whiptail start option.
    ArrNdx=$(( $Choice * 2 + 1))            # Calculate array offset.
    Line="${AllPartsArr[$ArrNdx]}"          # Array entry into $Line.

    # Validation - Don't wipe out Windows or Ubuntu 16.04:
    # - Partition must be ext4 and cannot be mounted.

    if [[ "${Line:FSTYPE_col:4}" != "ext4" ]] ; then
        echo "Only 'ext4' partitions can be clone targets."
        read -p "Press <Enter> to continue"
        continue
    fi

    if [[ "${Line:MOUNTPOINT_col:4}" != "    " ]] ; then
        echo "A Mounted partition cannot be a clone target."
        read -p "Press <Enter> to continue"
        continue
    fi

    GetUUID "$Line"                         # Get UUID of target partition.
    TargetUUID=$FoundUUID

    # Build "/dev/Xxxxx" FS name from "├─Xxxxx" menu line
    TargetDev="${Line%% *}"
    TargetDev=/dev/"${TargetDev:2:999}"

    break                                   # Validated: Break menu loop.

done                                        # Loop while errors.

#
# Mount Clone Target partition
#

Release=$(lsb_release -rs)                  # Source version ie: '16.04'
TargetMnt="/mnt/clone$Release"

echo ""
echo "====================================================================="
echo "Mounting clone partition $TargetDev as $TargetMnt"
mkdir -p "$TargetMnt"                       # '-p' directory may already exist
mount -t auto -v $TargetDev "$TargetMnt" > /dev/null

# Confirm partition is empty. If not empty confirm it's Ubuntu. If not exit.
# If Ubuntu display prompt with the version it contains and get confirmation.

echo ""
echo "====================================================================="
echo "PLEASE: Carefully confirm Source (Live) and Target (Clone) partitions"

# Build source information (our current boot partition)
echo "SOURCE (BOOT /)=$SourceDev"  > "$tmpInf1"
DistInfo "/" "$tmpInf1"                     # /etc/lsb_release information
df -h --output=size,used,avail,pcent "$SourceDev" >> "$tmpInf1"

# Build target information (the partition selected for cloning to)
LineCnt=$(ls "$TargetMnt" | wc -l)
if (( LineCnt > 1 )) ; then 
    # More than /Lost+Found exist so it's not an empty partition.
    if [[ -f "$TargetMnt"/etc/lsb-release ]] ; then
        echo "TARGET (CLONE)=$TargetDev" > "$tmpInf2"
        DistInfo "$TargetMnt" "$tmpInf2"    # /etc/lsb_release information
    else
        # TO-DO: might be cloning /boot or /home on separate partitions.
        #        the source partition is still `/` so can display message.
        echo "Selected partition has data which is not Ubuntu OS. Aborting."
        CleanUp                             # Remove temporary files
        exit 1
    fi
else
    echo "Target (Clone) partition appears empty" > "$tmpInf2"
    echo "/Lost+Found normal in empty partition" >> "$tmpInf2"
    echo "Head of '/Clone/' files & directories:" >> "$tmpInf2"
    ls "$TargetMnt" | head -n2 >> "$tmpInf2"
fi

# Target device free bytes
df -h --output=size,used,avail,pcent "$TargetDev" >> "$tmpInf2"

# Display source and target partitions side-by-side using bold text.
echo $(tput bold)       # Set to bold text
paste -d '|' "$tmpInf1" "$tmpInf2" | column -t -s '|'
echo $(tput sgr0)       # Reset to normal text

echo "NOTE: If you are recloning, new files in clone will be deleted,"
echo "      modified files are reset to current source content and,"
echo "      files deleted from clone are added back from source."
echo ""

read -p "Type Y (or y) to proceed. Any other key to exit: " -n 1 -r
echo    # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]] ; then
    CleanUp             # Remove temporary files
    exit 0
fi

# Copy non-virtual directories to clone. Credit to TikTak's Ask Ubuntu answer:
# /ubuntu/319805/is-it-safe-to-clone-the-current-used-disk?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

SECONDS=0
echo ""
echo "====================================================================="
echo "Using rsync to clone / to $TargetDev mounted as $TargetMnt"
rsync -haxAX --stats --delete --info=progress2 --info=name0 --inplace  \
      /* "$TargetMnt"                                                   \
      --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}
# For 16GB on Samsung Pro 960: First time 98 seconds, second time 27 seconds.
rsyncTime=$SECONDS  
echo ""
echo "Time to clone files: $rsyncTime Seconds"

# Change /etc/update-manager/release-upgrades prompt from never to LTS
echo ""
echo "====================================================================="
echo "Making changes in: $TargetMnt/etc/update-manager/release-upgrades"
echo "     from Prompt=: never"
echo "       to Prompt=: lts"
echo "Allows running 'do-release-upgrade -d' when rebooting clone target"
echo "Consider 'do-release-upgrade -d -f DistUpgradeViewNonInteractive' This"
echo "allows you to go to bed or go to lunch whilst upgrade runs."
echo ""
echo "* * *  When you Upgrade, TURN OFF screen locking for inactivity. * * *"
echo ""
sed -i 's/Prompt=never/Prompt=lts/' "$TargetMnt"/etc/update-manager/release-upgrades

## This section commented out to prevent surprises. You may uncomment.
## You may want to revise to include `cron.daily`, `cron.hourly`, etc.
# Move `/etc/cron.d` reboot jobs to `/etc/cron.d/hold` to prevent running
# scripts such as daily backup or Ubuntu 16.04 specific problem fixes.
#echo ""
#echo "====================================================================="
#echo "Moving '$TargetMnt/etc/cron.d' to '.../hold' to prevent running."
#echo "After booting clone, move back individual files you want to run"
#if [[ ! -d "$TargetMnt"/etc/cron.d/hold ]]; then
#    mkdir "$TargetMnt"/etc/cron.d/hold
#fi
#cp -p  "$TargetMnt"/etc/cron.d/* "$TargetMnt"/etc/cron.d/hold/
#rm -fv "$TargetMnt"/etc/cron.d/*

# Update /etc/fstab on clone partition with clone's UUID
echo ""
echo "====================================================================="
echo "Making changes in: $TargetMnt/etc/fstab"
echo "        from UUID: $SourceUUID"
echo "          to UUID: $TargetUUID"
sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/etc/fstab

# Update /boot/grub/grub.cfg on clone partition with clone's UUID
echo ""
echo "====================================================================="
echo "Making changes in: $TargetMnt/boot/grub/grub.cfg"
echo "        from UUID: $SourceUUID"
echo "          to UUID: $TargetUUID"
echo "Also change 'quiet splash' to 'nosplash' for environmental awareness"
echo "Suggest first time booting clone you make wallpaper unique"
sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/boot/grub/grub.cfg
sed -i "s/quiet splash/nosplash/g" "$TargetMnt"/boot/grub/grub.cfg

# Update grub boot menu
echo ""
echo "====================================================================="
echo "Calling 'update-grub' to create new boot menu"
update-grub

# Unmount and exit

echo ""
echo "====================================================================="
echo "Unmounting $TargetDev as $TargetMnt"

CleanUp             # Remove temporary files

exit 0

কল করা এবং উপরে কল করা একটি নতুন ফাইলে উপরে বাশ কোড পেস্ট করুন /usr/local/bin/clone-ubuntu.sh। তারপরে নতুন ফাইলটি কার্যকর করে তুলুন:

sudo chmod a+x /usr/local/bin/clone-ubuntu.sh

স্ক্রিপ্ট ব্যবহার কল করতে:

sudo clone-ubuntu.sh

16.04 এলটিএস আপগ্রেড করার জন্য কীভাবে উবুন্টু 18.04 এলটিএসে ক্লোন করুন

এটি একটি "বোনাস" বিভাগ যা অনেক লোকের আগ্রহী হতে পারে।

আপনার মেশিনটি পুনরায় বুট করুন। grubমেনু ক্লোন পার্টিশন করার জন্য একটি নতুন মেনু বিকল্প ইশারা উপস্থিত থাকবে। আপনি ক্লোনার উন্নত বিকল্প মেনু থেকে একটি নির্দিষ্ট কার্নেল সংস্করণও চয়ন করতে পারেন ।

ক্লোন করা 16.04 এলটিএসকে 18.04 এলটিএসে রূপান্তর করার একটি উপায়টি চালানো হয়:

sudo do-release-upgrade

নোট করুন -dপতাকাটি 26 জুলাই, 2018 এর আগে প্রয়োজনীয় ছিল তবে আর প্রয়োজন নেই।

18.04 আপগ্রেড নিশ্চিতকরণটি সাবধানতার সাথে পড়ুন

অগ্রসর হওয়ার আগে নিশ্চিত করুন নিষ্ক্রিয় স্ক্রীন লকিং বন্ধ রয়েছে। কীবোর্ড নিষ্ক্রিয়তার কারণে আপনার কম্পিউটার লক স্ক্রিনে চলে গেলে আপগ্রেড প্রক্রিয়াটি ক্র্যাশ হতে পারে।

18.04 আপগ্রেড প্রক্রিয়াটির সংক্ষিপ্তসার

এই বিভাগটি মেশিন নির্দিষ্ট হবে কারণ বিভিন্ন অ্যাপ্লিকেশন বিভিন্ন ব্যবহারকারী ইনস্টল করেছেন are এখানে নোট এবং মেমরির উপর ভিত্তি করে আমি তৈরি করেছি একটি সংক্ষিপ্তসার:

  1. নিশ্চিতকরণ এগিয়ে চলুন: ENTER
  2. প্যাকেজগুলি সরানো হবে: ওয়াই
  3. Longind.conf প্রতিস্থাপন: ওয়াই
  4. কনফিগারেশন ফাইল '/etc/sane.d/dll.conf', ডিফল্ট এন, Y নিন
  5. '/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf' ডিফল্ট এন নিন
  6. কনফিগারেশন ফাইল '/etc/pulse/default.pa' ডিফল্ট এন, Y নিন
  7. কনফিগারেশন ফাইল '/etc/grub.d/30_os-prober' 'ডিফল্ট এন, এন নিন
  8. পূর্ণ স্ক্রিন গ্রাব মেনু কনফিগারেশন উপস্থিত হয়। বিকল্প নিন: স্থানীয় সংস্করণটি বর্তমানে ইনস্টল করুন
  9. কনফিগারেশন ফাইল '/etc/cron.d/anacron', ডিফল্ট এন, কি দেখতে Y কে নিয়ে যান
  10. একাধিকবার একটি ত্রুটি বার্তা: /sbin/ldconfig.real: সতর্কতা: খোলা যায় না এমন কনফিগারেশন ফাইলটিকে উপেক্ষা করে: /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
  11. মানহীন: কনফিগারেশন ফাইল '/etc/vnstat.conf' (প্রদর্শন পার্থক্য 1.13 বনাম 1.18) ওয়াই নিন
  12. 220 প্যাকেজ সরানো হতে চলেছে। (কয়েক ঘন্টা সময় নিতে পারে) Y এ প্রবেশ করুন
  13. আপগ্রেড শেষ করার জন্য, একটি পুনঃসূচনা প্রয়োজন। ওয়াই নিন

10 নোটের ধাপটি বেশিরভাগ লোকেরা কখনই দেখতে পাবেন না। আমার উবুন্টুতে আমার পুরানো এনভিডিয়া ড্রাইভার ইনস্টলেশন রয়েছে 16.04 আমি কখনই পুরোপুরি অপসারণের কাছাকাছি যাইনি। এটি অন্তর্ভুক্ত করা হয়েছে কারণ আপনার অনুরূপ পুরানো প্যাকেজগুলি পুরোপুরি কখনও অপসারণ করা হতে পারে।

গ্রুব বুট মেনুটিকে ইউইএফআই এর অধীনে ক্লোন করতে পরিবর্তন করে

18.04 আপগ্রেডের বিপরীতে আমি দেখতে পেয়েছি 18.04.1 আপগ্রেড এই উত্তর অনুসারে মূল গ্রাব মেনুর পরিবর্তে ক্লোন এর গ্রাব মেনুটি ব্যবহার করতে গ্রুব ইউইএফআই কনফিগারেশন পরিবর্তন করেছে: ডুয়াল বুট এবং ফাইলগুলি /boot/grub/grub.cfg - কোনটি ব্যবহার করেন নি?

$ sudo cat /boot/efi/EFI/ubuntu/grub.cfg
search.fs_uuid b40b3925-70ef-447f-923e-1b05467c00e7 root 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

$ sudo grub-install
Installing for x86_64-efi platform.
Installation finished. No error reported.

sudo update-grubমূল পার্টিশনটি বুট করার পরে চালানো যথেষ্ট নয় যা grub.cfgগ্রাব দ্বারা লোড করা হয়েছে change sudo grub-installমূল পার্টিশনের কনফিগারেশনটি ব্যবহার করতে আপনাকে গ্রাবকে জোর করে ব্যবহার করতে হবে।

মূল পার্টিশন এবং ক্লোন পার্টিশন উভয়ই update-grubতাদের নিজস্ব /boot/grub/grub.cfgফাইল বজায় রাখতে ব্যবহার করতে পারে তবে বুটের সময় শুধুমাত্র একটি ব্যবহার করা যেতে পারে।

অবশ্যই আপনি যদি ক্লোনটি ক্লোন ব্যবহার করতে চান তবে মেনুটি আসল বিভাজনের উপরের পদক্ষেপগুলি করবেন না।


ইতিহাস সম্পাদনা করুন

6 মে, 2018 সম্পাদনা করুন - খালি ক্লোন (লক্ষ্য) পার্টিশনের জন্য তথ্য প্রদর্শন সংশোধন করা হয়েছে।

২ August শে আগস্ট, 2018 সম্পাদনা করুন - অনুলিপি ব্যবহারের --inplaceবিকল্পগুলি rsyncএত বড় ফাইল যেমন 2 জিবি ট্র্যাশ ফাইল অনুলিপি করা হয় না অনুলিপি প্রক্রিয়া চলাকালীন ক্লোন এ। এর ফলে "ডিস্কের বাইরে জায়গা" ত্রুটি হতে পারে। /etc/cron.dওভাররাইডগুলি মন্তব্য করুন কারণ ব্যবহারকারীরা পুরোপুরি একটি আলাদা ডিরেক্টরি রাখতে বা দেখতে চাইতে পারেন। পতাকা do-release-upgradeছাড়াই ব্যবহারের জন্য নির্দেশাবলী আপডেট করুন -dকারণ উবুন্টু 18.04.1 এলটিএস এখন প্রকাশিত হয়েছে।


1
+1 টি। একটি দরকারী সরঞ্জামের জন্য ধন্যবাদ :-)
সুডোডাস

1
@ সুদোদাস আমি আশা করি 18.04 আপগ্রেডের সাথে পূর্ণতা লাভের আগে লোকেরা এই সরঞ্জামটি ব্যবহার করবে। স্বল্পতম পরিবর্তনে তারা এটিকে টিউটোরিয়াল হিসাবে ব্যবহার করতে পারেন এবং লাইভ ইউএসবি বুট ব্যবহার করে ম্যানুয়ালি পদক্ষেপগুলি পুনরাবৃত্তি করতে পারে। নতুন 18.04 এ লোকেরা যে এতগুলি ত্রুটিগুলি পড়ছে তা পড়ার জন্য এটি মর্মান্তিক কারণ তারা প্রথমে পরীক্ষা না করে আপগ্রেড হয়েছে এবং তাদের পূর্ববর্তী 16.04 , 17.04 বা 17.10 ইনস্টলেশন মুছে ফেলার মাধ্যমে প্রতিশ্রুতিবদ্ধ । দুঃখের বিষয় আমি কয়েক দশক ধরে একই রকম জিনিস দেখেছি। আপনার আপ-ভোটের জন্য আপনাকে ধন্যবাদ! এটি যেমন প্রচেষ্টাগুলিতে করা প্রচেষ্টাটিকে শক্তিশালী করতে সহায়তা করে clone-ubuntu.shতবে আমি যাইহোক যাইহোক এটিকে 4 বার ব্যবহার করেছি!
WinEunuuchs2 ইউনিক্স

1
আমি আপনার স্ক্রিপ্টটি এখনও ব্যবহার করি নি, তবে আমি বুঝতে পেরেছি যে এটি খুব দরকারী এবং এটি ব্যবহার করার ইচ্ছা আছে। - আমি 8.04 থেকে 10.04 থেকে 12.04 এ আপগ্রেড করতে সক্ষম হয়েছি, যা আমি দীর্ঘ সময়ের জন্য ব্যবহার করেছি। কিন্তু যখন আমি 14.04 থেকে 16.04 এর মধ্যে আপগ্রেডের উদ্দেশ্যে যাত্রা করেছি তখন আমি ব্যর্থ হয়েছিল। আমার খুব ভাল ব্যাকআপ ছিল, তাই আমি নতুন করে ইনস্টল করেছি ১.0.০৪ এবং পরে অনুলিপি করেছিলাম, আমি কী রাখতে চাইছিলাম এবং টুইটগুলি, স্ক্রিপ্টগুলি, উপাধিগুলি এবং ইনস্টল করা প্রোগ্রামগুলির জন্য যাচাই করেছিলাম। - যাইহোক, আমি অবিচ্ছিন্ন লাইভ ড্রাইভগুলি 'হোম-আরডাব্লু' তৈরি ও আপগ্রেড করার জন্য একটি স্ক্রিপ্টে কাজ করি । এটি চেষ্টা করতে স্বাগতম :-)
সুডডাস

1
আপনার লিঙ্কে ছোটখাটো টাইপ: আমি 8.04 এলটিএসে তাদের সকলের পরীক্ষা করেছিলাম শেষে 18.04 এলটিএস পড়তে হবে । আপনার সরঞ্জামটি এমন অনেক লোকের কাছে 1 নম্বরে যান যাঁর উবুন্টু 16.04 ক্লোন করার পর্যাপ্ত এইচডিডি স্থান নেই। এটি এইচডিডি তে একটি নতুন পার্টিশন তৈরি করার চেয়ে সহজ (ধীর হলেও)।
WinEunuuchs2 ইউনিক্স

আমি টাইপগুলি ঠিক করেছি, ধন্যবাদ :-) আপনি ঠিক এইচডিডি তে ক্লোনিং (বা সামগ্রী অনুলিপি করা) সম্পর্কে ঠিক বলেছেন। তবে যে লোকেরা তাদের অবিচলিত লাইভ সিস্টেমটি তাদের পকেটে নিয়ে যেতে চায় তাদের পক্ষে এটি আমার সরঞ্জাম দিয়ে করা সুবিধাজনক।
সুডডাস

3

পূর্ববর্তী রিলিজ থেকে 18.04 এলটিএসে আপগ্রেড করতে সমস্যা

পূর্ববর্তী রিলিজ থেকে 18.04 এলটিএসে আপগ্রেড করা মোটেই সহজ নয়। অতীতে এই ধরনের আপগ্রেড করার চেয়ে বেশি সমস্যা আছে কিনা আমি জানি না, তবে যারা আপগ্রেড করেন তারা নিজেরাই ঝুঁকি নিয়ে থাকেন। অন্যদিকে তারা বাগগুলি খুঁজে পায় এবং যদি বাগগুলি প্রতিবেদন করা হয় তবে এটি আপগ্রেডিং সরঞ্জাম বিকাশের পাশাপাশি উবুন্টু 18.04 এলটিএস সিস্টেম নিজেই ডিবাগ করতে সহায়তা করবে।

এর অর্থ হ'ল যে ব্যক্তিরা আপগ্রেড হওয়ার আগে অবধি আনুষ্ঠানিকভাবে প্রথম পয়েন্ট রিলিজ (18.04.1 এলটিএস) প্রকাশ না হওয়া পর্যন্ত অপেক্ষা করার জন্য পর্যাপ্ত ধৈর্যশীল তারা একটি মসৃণ যাত্রা পাবেন

সম্পূর্ণ আপগ্রেড করার আগে পরীক্ষা করা হচ্ছে ...

@ উইনউনুউচস ২ ইউনিক্স এখানে যে পদ্ধতিটি বর্ণনা করে তা বাস্তব সিস্টেমের একটি অনুলিপি দ্বারা পরীক্ষা করা সম্ভব করে, যদি 18.04 এলটিএসে আপগ্রেড করা আপনার কম্পিউটারের হার্ডওয়্যার দ্বারা আপনার বর্তমান [আরও বা কম সংশোধিত] অপারেটিং সিস্টেমের সাথে কাজ করবে।

এটি দূষিত অপারেটিং সিস্টেমের সাহায্যে বেশ কয়েকটি বিপর্যয় রোধ করতে পারে।

আমি এখনও @ WinEunuuchs2 ইউনিক্সের স্ক্রিপ্টটি ব্যবহার করি নি, তবে আমি বুঝতে পেরেছি যে এটি খুব দরকারী এবং এটি ব্যবহার করার ইচ্ছা আছে। আমি 8.04 থেকে 10.04 থেকে 12.04 এ আপগ্রেড করতে সক্ষম হয়েছি, যা আমি দীর্ঘ সময়ের জন্য ব্যবহার করেছি। কিন্তু যখন আমি 14.04 থেকে 16.04 এর মধ্যে আপগ্রেডের উদ্দেশ্যে যাত্রা করেছি তখন আমি ব্যর্থ হয়েছি এবং ত্রুটিগুলি খুঁজে পেলাম না।

... এবং যদি সমস্যা হয় তবে একটি নতুন ইনস্টলেশন করুন

আমার ভাল ব্যাকআপ ছিল , তাই আমি 16.04-র একটি নতুন ইনস্টল করেছি এবং পরে অনুলিপি করেছিলাম, আমি কী রাখতে চাইছিলাম এবং টুইটগুলি, স্ক্রিপ্টগুলি, উপাধিগুলি এবং ইনস্টল করা প্রোগ্রামগুলির জন্য যাচাই করেছিলাম। যদি আমি @ WinEunuuchs2Unix এর পদ্ধতিটি ব্যবহার করে তাড়াতাড়ি সমস্যাটি দেখতে পেতাম তবে আমি সরাসরি একটি নতুন ইনস্টল করতে পারতাম।

অবিরাম লাইভ সিস্টেম আপগ্রেড করা হচ্ছে

অবিচ্ছিন্ন লাইভ সিস্টেমগুলি খুব বহনযোগ্য উবুন্টু সিস্টেমগুলি পেতে ব্যবহার করা হয় যা কখনও কখনও পরীক্ষার জন্য ব্যবহৃত হয় তবে কখনও কখনও এটি দীর্ঘ সময়ের জন্য ব্যবহৃত হয়।

এটি একটি পরিচিত সমস্যা, এটি যে কোনও ইনস্টলড সিস্টেমের মতো আপনার মতো সিস্টেম আপডেট এবং আপগ্রেড করা উচিত নয় কারণ তাড়াতাড়ি বা পরে এটি দূষিত হবে। তদতিরিক্ত, আপনি কার্নেল এবং কার্নেল ড্রাইভারদের সাথে আটকে আছেন যা আইসো ফাইলের সাথে আসে কারণ ওভারলে সিস্টেম শুরুর আগে সেগুলি শুরু করা হয়।

আপনি সাধারণত /homeপৃথক 'হোম' পার্টিশন দিয়ে একটি নতুন ইনস্টলেশন করার সময় ডিরেক্টরিটি আপনার নিজের মতো করে রাখা সম্ভব হয় । আপনি যদি একটি home-rwপার্টিশন তৈরি করেন , তবে অবিরাম লাইভ সিস্টেম বুটের সময় এটি স্বয়ংক্রিয়ভাবে খুঁজে পেতে ও ব্যবহার করতে পারে।

আমি একটি শেলসক্রিপ্ট তৈরি করছি এবং পরীক্ষা করছি, এমকে-প্রসিডেন্ট-লাইভ_উইথ_হোম-আরডাব্লু , যা একটি home-rwপার্টিশন দিয়ে একটি অবিরাম লাইভ সিস্টেম তৈরি করতে পারে এবং এটি পরে এটি আপগ্রেড করতে পারে,

  • একটি নতুন সঙ্গে আইসো ফাইল প্রতিস্থাপন। কমপক্ষে কোনও নতুন আইসো ফাইল প্রকাশের সময় আপনার আপগ্রেড করা উচিত তবে আপনি মাসে একবার এলটিএস সিস্টেম আপগ্রেড করতে পারেন এবং পরীক্ষার ট্র্যাকার থেকে বর্তমান দৈনিক আইসো ফাইলগুলি ব্যবহার করতে পারেন ,

  • নতুন আইসো ফাইলের জন্য গ্রাব পরিবর্তন করুন।

  • casper-rwঅপারেটিং সিস্টেমের পরিবর্তনগুলি সংরক্ষণ করে এমন ফাইল মুছুন (পুনরায় ফর্ম্যাট করুন) (যাতে আপনাকে সিস্টেমের সাথে যুক্ত প্রোগ্রাম প্যাকেজগুলি পুনরায় ইনস্টল করতে হবে),

  • home-rwআপনার ব্যক্তিগত ফাইল, সেটিংস এবং টুইটগুলি দিয়ে পার্টিশনটি সংরক্ষণ করুন ।

  • আরও তথ্যের জন্য এই লিঙ্কটি দেখুন ।

অতিরিক্ত লিঙ্ক

যে সকল ব্যক্তি উবুন্টুর সর্বশেষতম এবং সর্বশ্রেষ্ঠ সংস্করণটি পরীক্ষা করতে চান তাদের জন্য সাধারণ টিপস নিম্নলিখিত লিঙ্কে পাওয়া যাবে,

উবুন্টুর পরীক্ষা ও উন্নয়নে কীভাবে অংশ নেবেন


1
অতিরিক্ত লিঙ্কটি একটি দুর্দান্ত স্পর্শ। যত বেশি লোক সমস্যা হিসাবে রিপোর্ট করেছেন তত বেশি সমস্যা অন্যদের জন্য সমাধান হবে।
WinEunuuchs2 ইউনিক্স

1
এলটিএস ব্যবহারকারীদের জন্য খুব ভাল পয়েন্ট (প্রকৃতির দ্বারা সতর্ক) প্রথম পয়েন্ট প্রকাশের জন্য অপেক্ষা করতে হবে 18.04.1। বৃহত্তর সংস্থাগুলির জন্য তারা এখনও পরীক্ষার পার্টিশনে 16.04 ক্লোন করতে এবং স্টাফ প্রশিক্ষণের উদ্দেশ্যে এটি 18.04 এ উন্নীত করতে পারে। ব্যবহারকারীরা অভ্যস্ত এমন ডেটাতে অ্যাক্সেস পাবেন। অবশ্যই আইটি কর্মীরা 26 জুলাই প্রথম পয়েন্ট প্রকাশের আগে মাস আগে ক্লোন করা ডেটা উপর ব্যাপক পরীক্ষার মাধ্যমে উপকৃত হবেন।
WinEunuuchs2Unix
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.