diff --git a/src/pull.rs b/src/pull.rs
index 954b923728541c249c9a42b0a6fde3d0b61784bf..61b6c8c41de2c7b2c07b77c7251548c5af91c5ce 100644
--- a/src/pull.rs
+++ b/src/pull.rs
@@ -273,7 +273,7 @@ pub fn pull(remote: &str) -> () {
     let (borg_folder, _) = commit::check_path();
     let borg_folder = borg_folder.canonicalize().unwrap();
     push::check_dest_and_copy(&borg_folder, &url, &adress);
-    let remote_dir = push::get_remote_dir(&url, &borg_folder);
+    let remote_dir = push::get_remote_dir(&url);
     push::handle_existing_remote_dir(&remote_dir, &adress, "pull");
     save_and_clean_borg_folder(&borg_folder);
     push::copy_file(&borg_folder, &remote_dir, &adress, "pull");
diff --git a/src/push.rs b/src/push.rs
index 0999f0008c8a28984e47ce89d45d990129a7a647..8aedab38b31630cfcc515f55867ed9cae95ad683 100644
--- a/src/push.rs
+++ b/src/push.rs
@@ -1,4 +1,5 @@
 use crate::commit;
+use crate::configt;
 use crate::list;
 use crate::remote;
 use colored::Colorize;
@@ -173,7 +174,6 @@ fn get_id(content: &str) -> String {
     my_id
 }
 
-
 /// Get the current project id
 /// # Return
 /// The id inside .borg/config file
@@ -204,7 +204,6 @@ fn compare_id(remote_dir: &PathBuf, adress: &str) -> (bool, String, String) {
     (current_id == distant_id, current_id, distant_id)
 }
 
-
 /// Asks the user a question and get the answer
 /// # Arguments:
 /// - `question`: The question asked to a user
@@ -307,7 +306,16 @@ fn check_dir_exist_local(remote_dir: &PathBuf) -> bool {
     remote_dir.is_dir()
 }
 
-/// Function that check if a file exist on a remote filesystem
+/// Function that check if a file exist on the local filesystem
+/// # Arguments
+/// - `remote_file`: The remote file located inside the remote
+/// # Return
+/// true if the `remote_dir` is a directory, false else
+fn check_file_exist_local(remote_file: &PathBuf) -> bool {
+    remote_file.is_file()
+}
+
+/// Function that check if a dir exist on a remote filesystem
 /// # Arguments
 /// - `remote_dir`: The remote dir located by the remote
 /// - `adress`: The adress of the remote folder
@@ -336,7 +344,21 @@ fn check_file_exist_remote(remote_tar: &PathBuf, adress: &str) -> bool {
 /// - `adress`: The adress of the remote folder
 /// # Return
 /// true if the `remote_dir` is a directory, false else
-fn check_dir_exist(remote_dir: &PathBuf, adress: &str) -> bool {
+pub(crate) fn check_file_exist(remote_dir: &PathBuf, adress: &str) -> bool {
+    if adress == "file" {
+        check_file_exist_local(remote_dir)
+    } else {
+        check_file_exist_remote(remote_dir, adress)
+    }
+}
+
+/// Function that check if a dir exist on a remote or the local filesystem
+/// # Arguments
+/// - `remote_dir`: The remote dir located by the remote
+/// - `adress`: The adress of the remote folder
+/// # Return
+/// true if the `remote_dir` is a directory, false else
+pub(crate) fn check_dir_exist(remote_dir: &PathBuf, adress: &str) -> bool {
     if adress == "file" {
         check_dir_exist_local(remote_dir)
     } else {
@@ -424,13 +446,19 @@ fn get_remote_path(remote: &str) -> String {
 /// - `url`: A complete url path in adress:path form
 /// # Return
 /// A tuple containing the adress and the url
-fn split_path(url: &str) -> (String, PathBuf) {
+pub(crate) fn split_path(url: &str) -> (String, PathBuf) {
     let res = url.split(":").collect::<Vec<&str>>();
     if res.len() == 1 {
-        return (String::from("file"), PathBuf::from(url));
+        return (
+            String::from("file"),
+            PathBuf::from(url).canonicalize().unwrap(),
+        );
     } else if res.len() == 2 {
         if res[0].to_lowercase() == "file" {
-            return (String::from("file"), PathBuf::from(res[1]));
+            return (
+                String::from("file"),
+                PathBuf::from(res[1]).canonicalize().unwrap(),
+            );
         }
         return (res[0].to_owned(), PathBuf::from(res[1]));
     }
@@ -557,7 +585,6 @@ pub(crate) fn copy_file(
     };
 }
 
-
 /// Function that return the name of  the folder that will containg the content
 /// of the .borg folder on the remote directory
 ///
@@ -566,18 +593,9 @@ pub(crate) fn copy_file(
 /// # Return
 /// The path `url/borg_archive_<PROJECT_DIR>` where <PROJECT_DIR> is the name
 /// of the folder at the root of the project
-pub(crate) fn get_remote_dir(url: &PathBuf, borg_folder: &PathBuf) -> PathBuf {
+pub(crate) fn get_remote_dir(url: &PathBuf) -> PathBuf {
     let mut remote_dir = url.to_owned();
-    let name_folder = format!(
-        "borg-archive_{}",
-        borg_folder
-            .parent()
-            .unwrap()
-            .file_stem()
-            .unwrap()
-            .to_str()
-            .unwrap()
-    );
+    let name_folder = configt::get_project_name();
     remote_dir.push(name_folder);
     remote_dir
 }
@@ -590,7 +608,7 @@ pub fn push(remote: &str) -> () {
     let borg_folder = borg_folder.canonicalize().unwrap();
     let (adress, url) = get_adress_and_url(remote);
     check_dest_and_copy(&borg_folder, &url, &adress);
-    let remote_dir = get_remote_dir(&url, &borg_folder);
+    let remote_dir = get_remote_dir(&url);
     handle_existing_remote_dir(&remote_dir, &adress, "push");
     copy_file(&borg_folder, &remote_dir, &adress, "push");
 }