স্থানীয়ভাবে WP-CLI ব্যবহার করে স্থানীয়ভাবে একটি দূরবর্তী ডাটাবেস আমদানির দ্রুততম উপায় (কমপক্ষে পদক্ষেপের পরিমাণ)


13

আমি ডাব্লুপি-সিএমএল ব্যবহার করে একটি রিমোট ডাটাবেস আমদানির কাজটি স্বয়ংক্রিয় করতে চাই ।

বর্তমান প্রক্রিয়াটি sshসার্ভারের কাছে রয়েছে এবং ডাব্লুপি-সিএলআইexport ব্যবহার করে ফাইল টু রান করুন , ফাইলটি স্থানীয় ডিরেক্টরিতে অথবা এর মাধ্যমে অনুলিপি করুন , এবং তারপরে ফাইলটি ডাব্লুপি-সিএলআইয়ের মাধ্যমে। আমি একটি ব্যবহার করতে এবং এখানে যতটা সম্ভব পদক্ষেপ সরিয়ে নিতে চাই ।scprsyncimport@alias

যদিও আমি ভাবতে চাই যে এরকম কিছু সম্ভব:

echo "$(wp @remote db export -)" | wp @local db import -

একটি ডিবি আকারের সাথে> 5 জিবি সঙ্কুচিত, এটি আরও কার্যকর বিকল্প হিসাবে মনে হচ্ছে:

DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -

দুর্ভাগ্যক্রমে আমি টার্মিনালের সীমাতে আঘাত করছি বা এই কলটির কাঠামোটি পরিষ্কার করা উচিত কারণ আমার উইন্ডোটি কেবল স্তব্ধ হয়ে গেছে বলে মনে হচ্ছে।

আমি scpএই প্রক্রিয়া থেকে অপসারণ করতে পারেন যেখানে অন্য সমাধান আছে ? আমি এখানে অন্য কোন আদেশ ব্যবহার করতে পারি? আমি এখানে উদাহরণগুলি থেকে বহু-সাইট সরিয়ে ফেলেছি তবে এটিও বিবেচনার জন্য যা এ্যরসের অংশ হতে পারে।

আদর্শভাবে, আমি ভবিষ্যতে এই জাতীয় কিছু আশা করব:

wp @local db import @remote


বেসিক ভ্যাগ্র্যান্ট বাক্সের@alias সাথে ব্যবহারের বর্তমান উদাহরণ সেটআপ ।

~/.wp-cli/config.yml

@basic:
    ssh: basic.dev/var/www/wordpress/

~/.ssh/config

Host basic.dev
    HostName basic.dev
    User vagrant
    IdentityFile ~/sites/basic.dev/.vagrant/machines/default/virtualbox/private_key

আপডেট

উপর ঘাঁটি @davemac এটা দেখে মনে হচ্ছে এই প্রক্রিয়া সহজেই সরলীকৃত যেতে পারে

wp db import - <<< $(wp db export -);

এখন আমাকে কেবল এমইউ-সাইটের টেবিল এবং সাইট_আরএল ધ્યાનમાં নেওয়া দরকার

wp @basic db export --tables=$(wp @basic db tables --url=http://basic.dev/site/ --format=csv) - | gzip > basic-dev-site.sql.gz

blog_id=$(wp @basic eval --url=http://basic.dev/site/ 'echo get_current_blog_id();');

prefix=$(wp @basic eval --url=http://basic.dev/site/ 'global $wpdb; echo $wpdb->prefix;')

site_url=$(wp @basic eval "echo site_url();")

ব্যবহার search-replace- ধন্যবাদ @ ওয়েস্টনআউটটার

sql=$(wp search-replace $(wp eval "echo site_url();" | cut -d ":" -f2) "//new-site.com" --network --skip-columns=guid --export); printf "%s" "$sql"

ডাব্লুপি মাল্টিসাইট - ফাইল ছাড়াই স্থানীয় আমদানিতে একটি রিমোট সাইট রফতানি করুন:

wp @remote db export --tables=$remote_tables - | sed "s#$remote_prefix#$local_prefix#g" | sed "s#$remote_site_domain#$local_site_domain#g" | wp @local db import -


similiar


আপনি একটি বাশ স্ক্রিপ্ট লিখতে পারেন যা রিমোট সার্ভারে scp / rsync ফাইলের জন্য ক্রোন জবের মাধ্যমে ডাকা হয়। তারপরে রিমোট সার্ভারে আপনার কাছে আরও একটি বাশ স্ক্রিপ্ট থাকতে পারে যা ক্রোন জবের মাধ্যমে চলে যা ব্যাকআপ ফাইলের জন্য ফোল্ডার দেখায় এবং ফাইলটি একবার উপস্থিত হলে এটি এটিকে দূরবর্তী ডিবিতে আমদানি করবে। এটি কীভাবে আমি একটি "হট স্ট্যান্ডবাই" সার্ভার সিঙ্কে রাখি তার অনুরূপ।
পিতল

ব্যক্তিগতভাবে আমার জন্য, আমি ক্রোন চাকরিতে এটি করতে চাই না কারণ এটি মিশ্রণের সাথে আরেকটি নির্ভরতা যুক্ত করে এবং আমি যখন এটির সাথে কাজ করছি তখন রিমোটের সাথে স্থানীয়ভাবে সমন্বয় সাধনের চেষ্টা করা আরও বেশি। "রিমোট" অনেক উপকরণগুলির মধ্যে একটি হ'ল স্থানীয় সাথে একই। ফাংশন কলগুলি হ্রাস করার আরেকটি কারণ হ'ল আমি এক-লাইন / অনুলিপি / পেস্ট / যেতে পছন্দ করি! কোডের লাইনগুলি;)

আপনি কি ভেরিয়েবলের পরিবর্তে অস্থায়ী ফাইলটিতে ডাম্প লেখার চেষ্টা করেছেন?
ডেভিড

এখনই আপনার এটি করা দরকার যা ফাইল ট্রান্সফার পরিচালনার জন্য ডাব্লুপি-সিএলআই এর বাইরে ফাংশন প্রয়োজন --- এবং লোকেশন প্রতি আরও প্রমাণীকরণ।
jgraup

@ jgraup এই প্রশ্নটির সমাধান হয়েছে?
ইথান জিংকস ও'সুলিভান

উত্তর:


6

যেহেতু ডাব্লুপি-সিএলআই 0.24.0 আপনি এখন এমন উপকরণ ব্যবহার করতে পারেন যা আপনাকে খুব সহজেই একটি দূরবর্তী ডাটাবেস আমদানি করতে সক্ষম করে।

উপকরণ ব্যবহার করে, আপনি অন্য WP-CLI ইনস্টলের বিপরীতে WP-CLI কমান্ড চালাতে পারেন। এই ইনস্টল একটি দূরবর্তী মেশিন হতে পারে।

এই বিষয়টি মাথায় রেখে আমি একটি ব্যাশ ওরফে একসাথে হ্যাক করেছি যা স্থানীয় সাইটে একটি দূরবর্তী ডাব্লুপি ডাটাবেস টানতে বেশ কয়েকটি ডাব্লুপি-সিএমআই কমান্ডকে এক সাথে শৃঙ্খলিত করে। এই ক্ষেত্রে, আমার কাছে একটি স্থানীয় ডাব্লুপি-ক্লিমে.আইএমএল ফাইল রয়েছে যেখানে আমি আমার প্রোডাকশন সাইটটিতে একটি উপন্যাস হিসাবে @ প্রোড সেট করেছি (যা একটি এসএসএইচ ওরফে ব্যবহার করে)।

pullprod() {
    # make a backup of the current local database
    wp db export _db.sql
    wp db reset --yes
    # get current directory name, used for database and URL
    current=${PWD##*/}
    # connect to remote site and ssh the remote database down to our local directory
    wp @prod db export - > $current.sql
    echo "copying of remote database to $current directory complete."
    wp db import
    # database is now imported so we can delete it
    rm -rf $current.sql
    # get the remote site URL, remove the http:// for our search replace
    production_url=$(wp @prod eval '$full_url=get_site_url();$trimmed_url=str_replace("http://", "", $full_url); echo $trimmed_url;')
    wp search-replace "$production_url" "$current.localhost"
    echo "All done, enjoy!"
}

pullprodবর্তমান ডাব্লুপি সাইটের একটি কমান্ড আপনার প্রয়োজন মতো কাজ করবে, পাশাপাশি আপনার উপন্যাসটি সেটআপ করা হবে (যা স্বয়ংক্রিয়ভাবেও স্বয়ংক্রিয়ভাবে চালিত হতে পারে)।

এটি কাজ করে, তবে আমার পরবর্তী কাজটি হ'ল আমি কীভাবে $ product_url ভেরিয়েবল পাব তার উন্নতি করা, বর্তমানে আমি স্থানীয় ফাইল থেকে এটিকে টানছি।


এটা অসাধারণ. সত্যিই আমি সত্যিই সন্ধান করছিলাম wp @alias db export - > $localfilename.sql। এটি এমইউ-সাইটগুলির জন্য কিছুটা আরও জটিল হয়ে production_url=$(wp @prod eval "echo site_url();"); echo "The URL is $production_url";
ওঠে

ঠিক wp db reset --yesকি করে? আহ ... সমস্ত টেবিল সাফ করে যাতে নতুন ফাইলগুলিতে একটি ক্লিন ডিবি থাকে। ডিবি রিসেট

1
তার জন্য ধন্যবাদ, আমি আপনার প্রোড ইউআরএল কৌশলটি নিয়েছি এবং উত্পাদনের ইউআরএল থেকে http: // মুছে ফেলার জন্য এটি কিছুটা সংশোধন করেছি (এটি আরও ব্যাপক অনুসন্ধান এবং প্রতিস্থাপনের জন্য তৈরি করে)
ড্যাভম্যাক

1
এটিও wp search-replaceএকটি --exportআর্গকে সমর্থন করে যাতে আপনি একবারে রফতানি এবং অনুসন্ধান / প্রতিস্থাপন করতে পারেন: wp-cli.org/commands/search-replace
ওয়েস্টন রাউটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.