diff --git a/backend/src/init.rs b/backend/src/init.rs index 059f605a3..3cacc0726 100644 --- a/backend/src/init.rs +++ b/backend/src/init.rs @@ -126,9 +126,14 @@ pub async fn init_postgres(datadir: impl AsRef) -> Result<(), Error> { let pg_version_string = pg_version.to_string(); let pg_version_path = db_dir.join(&pg_version_string); if tokio::fs::metadata(&pg_version_path).await.is_err() { - let conf_dir = format!("/etc/postgresql/{pg_version}"); + let conf_dir = Path::new("/etc/postgresql").join(pg_version.to_string()); + let conf_dir_tmp = { + let mut tmp = conf_dir.clone(); + tmp.set_extension("tmp"); + tmp + }; if tokio::fs::metadata(&conf_dir).await.is_ok() { - tokio::fs::remove_dir_all(&conf_dir).await?; + tokio::fs::rename(&conf_dir, &conf_dir_tmp).await?; } let mut old_version = pg_version; while old_version > 13 @@ -145,6 +150,12 @@ pub async fn init_postgres(datadir: impl AsRef) -> Result<(), Error> { break; } } + if tokio::fs::metadata(&conf_dir).await.is_ok() { + if tokio::fs::metadata(&conf_dir).await.is_ok() { + tokio::fs::remove_dir_all(&conf_dir).await?; + } + tokio::fs::rename(&conf_dir_tmp, &conf_dir).await?; + } } Command::new("systemctl")